I have this sample from a recent talk at Basta! conference in Germany, which shows (among other things) how to bind a cross table to a DataGridView (the standard .NET 2 data grid). A cross table is basically the result of transposing some data and using one of the fields for a second dimension.

The sample I have works on two tables of data. It doesn’t actually use a database and the reference that points from the list of votes to that of features is implemented as an object reference, but the relationship is like this:

crosstab-tables12.png

Now, let’s assume there’s this data in the two tables/lists:

Features

ID Name
1 Synthesize out-of-the-box supply-chains
2 Syndicate vertical mindshare

Votes

ID Feature_ID Year Priority
1 1 2004 30
2 1 2005 40
3 1 2006 70
4 2 2004 70
5 2 2005 60
6 2 2006 30

In a cross table the same data could look like this:

Feature/Year 2004 2005 2006
Synthesize out-of-the-box supply-chains 30 40 70
Syndicate vertical mindshare 70 60 30

This is exactly the kind of transformation demonstrated in my sample. Now, there are a number of other things in that program, so don’t be confused. I suggest you focus on the workings of the VoteValuePropertyDescriptor class.

Here’s the download: FeatureVoting.zip

featurevoting.png