【问题标题】:Devexpress - How do I base a Gridcontrol's data on the sorted/filtered data from another GridControl?Devexpress - 如何将 Gridcontrol 的数据基于来自另一个 GridControl 的排序/过滤数据?
【发布时间】:2011-06-16 17:54:13
【问题描述】:

我的表单上有两个 GridControl。一个是相当大的数据集,包括一个名为 Score 的列。我希望我的其他 GridControl 显示其中的一个子集(例如,基于 Score 值的 Top 3 和 Bottom 3)。

我怎样才能最好地做到这一点?如果它是相同的 GridControl,我想我可以使用不同的视图,但由于它是完全独立的,我是否应该获取视图的副本,过滤/排序数据并将其显示为新数据集?或者有没有办法将我的第二个 GridControl 的数据链接到我的第一个?

编辑:我可以做grid2.datasource = grid1.datasource 并从那里开始。表格不会有任何动态更新,所以也许这是要走的路?

【问题讨论】:

  • 所以基本上你想在另一个网格中显示过滤值?
  • 是的。我可以想出几种不同的方法来做到这一点,我只是不知道 Devexpress 是否提供了一种内置的方法来有效地做到这一点。
  • 是的,它内置了过滤机制。检查我的答案。

标签: c# devexpress gridcontrol


【解决方案1】:

我会使用以下方法:

1) 创建一个新的DataView,根据你的方法对其进行过滤,并将第二个gridControl的DataSource设置为这个DataView;

2)将第二个GridControl的DataSource属性设置为相同的值,过滤对应的GridView。

【讨论】:

    【解决方案2】:

    无需创建新的 DataView。查看 gridview 的 CustomRowFilter 事件。

    使用e.ListSourceRow 获取数据表中的行。

    因此,如果您希望显示值 > 25 的行并隐藏其余行

    gridView_CustomRowFilter(object sender, RowFilterEventArgs e)
    {
          if(dataset.datatable[e.ListSourceRow]["ColumnName"] < 25)
          {  
              e.visible = false;
              e.handled = true;
          }
    }
    

    【讨论】:

    • 这是否适用于两个网格控件?我可以将dataset.datatable 指向我原始网格的数据源并在第二秒内即时完成过滤吗?
    • 适用于 'n' 网格控件。这与底层数据源无关。您可以将“n”个网格绑定到同一个数据源。每个 GridControl 都有自己的 gridView。所以每个gridview都可以独立过滤行。
    • 好的,谢谢。所以本质上,这类似于将第二个网格绑定到同一个数据源并独立进行过滤的建议。我会尝试两种建议的方法并标记我使用的方法,但它们都很值得了解!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    相关资源
    最近更新 更多