как я могу добавить пользовательский столбец, отличный от DataTable, в свой DataView в приложении winforms ADO.net?

Как я мог (/возможно ли) добавить пользовательский столбец в свой DataView и в этом столбце отображать результат определенного вычисления.

То есть в настоящее время у меня есть dataGridView, который имеет привязку к DataView на основе DataTable из моей базы данных. Я хотел бы добавить дополнительный столбец в dataGridView для отображения числа, которое рассчитывается путем просмотра этой текущей строки и ее дочерней строки. Другими словами, информацию для столбца можно получить не только из самих данных строки.

Конкретные вопросы могут быть такими: а) куда добавить саму колонку? к DataView я предполагаю? б) из какого метода/события инициировать перерасчет значения этого пользовательского столбца (/как я могу это контролировать)

Спасибо

PS. Я также отметил, что если я использую следующий код/подход, я получаю бесконечный цикл...

    // 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;
}

Какой другой подход мог бы избежать этого зацикливания. т. е. в настоящее время я говорю обновить значение пользовательского столбца при изменении строки, однако после изменения строки она вызывает другое событие "строка изменилась"...


person Greg    schedule 18.01.2010    source источник
comment
См. msdn.microsoft.com/ en-us/library/ особенно в разделе, посвященном ОТНОШЕНИЮ РОДИТЕЛЕЙ И ДЕТЕЙ   -  person Ajw    schedule 18.01.2010


Ответы (1)


Я думаю, что эта ссылка может быть хорошим ответом? Хотя я еще не уверен, сможет ли свойство выражения DataColumn.Expression обработать его... (т.е. выполнить SUM всех Item.size для всех элементов, которые являются дочерними элементами текущего, на основе ITEM_TABLE‹ ==> Конструкция RELATIONSHIP_TABLE.Relationship_table имеет идентификатор, ITEM_PARENT_ID, ITEM_CHILD_ID.

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

person Greg    schedule 18.01.2010