【发布时间】:2010-01-18 02:21:44
【问题描述】:
我如何(/是否可能)向我的 DataView 添加自定义列,并在此列中显示特定计算的结果。
也就是说,我目前有一个 dataGridView,它基于我数据库中的 DataTable 绑定到一个 DataView。我想在 dataGridView 中添加一个额外的列来显示一个数字,该数字是通过查看当前行加上它的子行来计算的。换句话说,列的信息不仅仅是从行数据本身推导出来的。
具体问题可能是: a)在哪里添加列本身?到我假设的 DataView? b)从哪个方法/事件触发重新计算这个自定义列的值(/我如何控制这个)
谢谢
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;
}
还有什么其他方法可以避免这种循环。即目前我说的是在行更改时更新自定义列的值,但是在更改行之后它会触发另一个“行已更改”事件...
【问题讨论】:
-
参见msdn.microsoft.com/en-us/library/…,尤其是关于父/子关系参考的部分
标签: winforms ado.net datagridview datatable dataview