views:

180

answers:

1

Hi,

How could I (/is it possible) to add a custom column to my DataView, and in this column display the result of a specific calculation.

That is, I currently have a dataGridView which has a binding to a DataView, based on the DataTable from my database. I'd like to add an additional column to the dataGridView to display a number which is calculated by looking at this current row plus it's children row. In other words the info for the column isn't just derivable from the row data itself.

Specific questions might be: a) where to add the column itself? to the DataView I assume? b) which method / event to trigger the re-calculation of the value of this custom column from ( / how do I control this)

Thanks

PS. I've also noted if I use the following code/approach I get a infinite loop...

    // Custom Items
    DataColumn dc = new DataColumn("OverallSize", typeof(long));
    DT_Webfiles.Columns.Add(dc);
    DT_Webfiles.RowChanged += new DataRowChangeEventHandler(DT_Row_Changed);

private static void DT_Row_Changed(object sender, DataRowChangeEventArgs e)
{
    e.Row["OverallSize"] = e.Row["OverallSize"] ?? 0;
    e.Row["OverallSize"] = (long)e.Row["OverallSize"] + 1;
}

What other approach could avoid this looping. i.e. currently I'm saying update the value of the custom column when the row changes, however after then changing the row it triggers antoher 'row has changed' event...

A: 

I think this link may be a good answer? Although I'm not sure yet whether expression DataColumn.Expression property will be able to handle it yet...(i.e. doing a SUM of all Item.size for all items that are a child of the current one, based on the ITEM_TABLE<==>RELATIONSHIP_TABLE construct. Relationship_table has an ID, ITEM_PARENT_ID, ITEM_CHILD_ID.

http://ondotnet.com/pub/a/dotnet/2003/05/26/datacolumn_expressions.html

Greg