gridview过滤器,由两个不同的表过滤

时间:2011-03-22 07:50:47

标签: filter devexpress

我的gridview基于两个表的关系 - 表A的列大小(int)和表B的列人类的值(男人,女人)。我可以创建过滤器,过滤A.Size =“100”和B.Human =“man”,当我选择sourse我的视图为A时,我想要这个过滤器 - 当我排序不看到哪些记录表B具有值“女人”,当我过滤时选择B作为视图sourse - 不查看A中的值与“100”不同的记录。我可以创建这样的过滤器吗?如果是 - 在devExpress的组件之间,这个过滤器视觉的适当表示是什么?我可以通过网格直接过滤来完成吗?

1 个答案:

答案 0 :(得分:1)

据我所知,您的GridControl绑定到包含两个表的数据源。由于过滤器应用于GridView,并且每个GridView只能绑定到单个表,因此无法将此过滤条件应用于GridView。那么,有两种解决方案适合您。首先,我认为最好的是将此过滤器应用于网格的底层DataSource 其次是基于GridView过滤的解决方案。在这种情况下,您应该在主要和详细的GridView对象上应用单独的过滤器。即主gridView应具有以下过滤条件:

gridView1.ActiveFilterCriteria = new BinaryOperator("Size", 100);

要将过滤条件应用于详细GridView,请处理主GridView的MasterRowExpanded事件以获取详细的GridView对象并应用过滤条件:

private void gridView1_MasterRowExpanded(object sender, DevExpress.XtraGrid.Views.Grid.CustomMasterRowEventArgs e) {
    GridView detailGridView = (sender as GridView).GetDetailView(e.RowHandle, e.RelationIndex);
    detailGridView.ActiveFilterCriteria = new BinaryOperator("Human", "man");
}

注意:第一个解决方案是最好的解决方案。