Filter gridviev过滤器,通过两个不同的表进行过滤

Filter gridviev过滤器,通过两个不同的表进行过滤,filter,devexpress,Filter,Devexpress,Mygridview基于两个表的关系—表a具有列大小(int)和表B具有列人值(man,woman)。我可以创建一个过滤器来过滤A.Size=“100”和B.Human=“man”吗?当我为我的视图选择sourse时,我希望这个过滤器是A-当我排序时不看到表B中有值“woman”的记录,当我为视图选择Bsourse时,我过滤-不看到A中有值与“100”不同的记录。我可以创建这样的过滤器吗?如何创建?如果是-此过滤器在devExpress组件之间的适当表示形式是什么?我可以使用网格中的直接过滤器吗

My
gridview
基于两个表的关系—表a具有列大小(int)和表B具有列人值(man,woman)。我可以创建一个过滤器来过滤A.Size=“100”和B.Human=“man”吗?当我为我的视图选择
sourse
时,我希望这个过滤器是A-当我排序时不看到表B中有值“woman”的记录,当我为视图选择B
sourse
时,我过滤-不看到A中有值与“100”不同的记录。我可以创建这样的过滤器吗?如何创建?如果是-此过滤器在
devExpress
组件之间的适当表示形式是什么?我可以使用网格中的直接过滤器吗?

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

gridView1.ActiveFilterCriteria = new BinaryOperator("Size", 100);
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");
}
要将过滤条件应用于详图GridView,请处理主GridView的MasterRowExpanded事件以获取详图GridView对象并应用过滤条件:

gridView1.ActiveFilterCriteria = new BinaryOperator("Size", 100);
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");
}
注意:第一种解决方案是最好的