在 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_VALUE
Table3.T2_VALUE = PARENT(T3_T2).T2_VALUE
Table3.T1_VALUE = PARENT(T3_T2).T1_VALUE
其中 T2_T1、T3_T2 - 关系名称。
这似乎是正确的方法,但我担心使用仅用于 UI 目的的冗余计算列污染干净的数据模型(在代码中的其他地方我仍然会使用Table3Row.Table2Row.Table1Row.T1_VALUE
使用Linq查询数据集并从不同的表中获取列但是在这种情况下,网格将无法将数据写入table3并进行排序。
将网格绑定到 Table3 并处理呈现单元格的事件,并从那里的父表输出值。网格可以写入Table3,但不能排序(我使用的是syncfusion网格,但我认为它没有任何区别)
实现一个可以显示来自多个表的数据的视图,并更新主表。我没有朝这个方向挖掘,它似乎太复杂了。可能吗?
正如我所指出的,使用计算列可以解决所有问题,并且似乎是解决问题的最简单方法。但也许有更优雅和正确的方法。