我正在寻找一个针对.NET 的数据感知网格,该网格已针对底层数据集的重复更改进行了优化。我将举一个例子来说明我在这种情况下优化的意思,因为几乎所有网格都允许您更改数据源。但是回到 OCX 时代,改变数据源给数据感知网格带来了问题。
此数据感知数据驱动网格不得使用整数行句柄。它必须使用 GUID 行句柄。这是这个网格最重要的要求。
底层数据集的每一行都被分配了一个 GUID rowHandle,而不是一个整数,并且无论数据行如何排序或分组,数据行的 GUID rowHandle 都保持不变,并且可以通过其 rowHandle 立即检索数据行。
当当前获得焦点的行的 GUID 与最近获得焦点的行的 GUID 不同时,将触发网格的FocusedRowChanged事件。 [编辑:在使用整数行句柄的网格中,通常情况下,当数据源更改时,FocusedRowChanged 事件不会触发,因为focused-row-position 没有更改;例如,焦点在数据源更改前的第一行,焦点在数据源更改后的第一行;即使基础行数据完全不同,整数行句柄也是相同的。]
我希望网格的行为是真正的数据感知和数据驱动;例如
Grid.GroupByColumnNames = {"customername","city"};
Grid.Groups["customername"].ExpandedValues = {"Acme Widgets", "Foo Industrial"};
Grid.Groups["city"].ExpandedValues = {"New York","Miami"};
现在,如果我清除上面网格的基础数据集并用另一个数据集替换它的数据源,该数据源也有 customername 和 city 列,并在该列中包含值 Acme Widgets 和 Foo Industrial,网格将按 customername 对新数据集进行分组和城市列,并展开这些公司(如果 PreserveGroupingsWhenDataSetChanges 标志设置为 True)。