1

我们如何将 2 个不同的数据集绑定到同一个 DevExpress gridview。根据我选择的值,它应该填充第一个或第二个数据集。

4

2 回答 2

0

是否有任何特定条件取决于用于填充 aspxgridview 的数据集?

您可以在类文件中检查该条件,然后根据该条件返回所需的数据集。

只需将与条件相关的一个参数传递给方法并返回准确的数据集,然后将其绑定到网格。

于 2012-09-06T21:11:12.113 回答
0

你试过什么?

无论如何,这些是可行的不同方法:

  1. grid.DataSource在 Page/UserControl Load 事件中赋值;确保Bind按要求进行。
  2. 在ASPxGridViewgrid.DataSource的事件中分配并在 Load 事件中酌情调用(因此事件被调用)。OnDataBindingBind
  3. 使用 DataSource 控件(我真的很喜欢GenericDataSourceControl),然后更改返回的内容(在 GenericDataSourceControl 中有一个OnExecuteSelect函数1)。如果在标记中设置,DataSourceId=".."那么它将自动绑定。ObjectDataSourceLinqDataSource可以采用声明性参数。

在大多数情况下,我更喜欢#3。它是“绑定延迟”,这意味着状态需要确定要绑定的数据集(例如响应事件)已经更新。否则事件将不得不重新绑定网格,这是一种浪费的绑定。作为奖励,还可以确保 ViewState 不混乱/不被利用。

当然,在这些交叉点中的每一个处,分配“正确”的数据集。

如果有两个不同的数据集具有不同的列/排序配置,那么另一种选择是很好的,它只是创建两个控件,然后在它们之间切换可见性(真正的可见性,而不仅仅是客户端的可见性)。如果控件不可见,请避免将数据绑定到它,因为这是一种浪费的操作。

快乐编码!


1 LinqDataSource并且ServerModeLinqDataSource也可以采用“选择方法”,但我发现 GenericDataSource 提供的接口更易于使用,并且在尝试更新数据源时没有几个“陷阱”。ObjectDataSource 只是 GAC 解决方案中要处理的 PITA,使用起来感觉像是一种负担。

于 2012-06-28T16:31:17.990 回答