【发布时间】:2012-07-10 03:54:45
【问题描述】:
在 WinForms 应用程序的以下场景中绑定数据网格的最佳策略是什么。 假设,我有一个带有表格的强类型数据集:
Table1 (T1_ID, T1_VALUE) <--* Table2 (T2_ID, T1_ID, T2_VALUE) <--* Table3(T3_ID, T2_ID, T3_VALUE)
我想将数据网格绑定到 Table3,并显示 Table2 和 Table1 中的字段,并能够过滤,按所有列排序:
T3_VALUE | T2_VALUE | T1_VALUE
在这种情况下,常见的绑定方法是什么?
我看到以下替代方案:
-
添加计算列:
李>Table2.T1_VALUE = PARENT(T2_T1).T1_VALUETable3.T2_VALUE = PARENT(T3_T2).T2_VALUETable3.T1_VALUE = PARENT(T3_T2).T1_VALUE
其中 T2_T1、T3_T2 - 关系名称。
这似乎是正确的方法,但我担心干净的数据模型会污染仅用于 UI 目的的冗余计算列(在代码的其他地方我仍会使用Table3Row.Table2Row.Table1Row.T1_VALUE 使用 Linq 查询数据集并从不同表中获取列 但是在这种情况下,网格将无法将数据写入table3并进行排序。
将网格绑定到 Table3 并处理呈现单元格的事件,并从那里的父表输出值。 网格可以写入Table3,但是不能排序(我用的是syncfusion网格,但我觉得没什么区别)
实现一个可以显示来自多个表的数据的视图,并更新主表。我没有朝这个方向挖掘,它似乎太复杂了。有可能吗?
正如我所指出的,使用计算列可以解决所有问题,而且似乎是最简单的解决方法。但也许有更优雅和正确的方法。
【问题讨论】:
-
I want to bind a datagrid to Table3, and display fields from Table2 and Table1, and have ability to filter, sort by all columns:--> 创建视图!! -
这在#4 中提到。我不确定这是否可能。
标签: .net vb.net winforms data-binding dataset