2011-03-22 59 views
0

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

回答

1

据我所知,你的GridControl绑定到一个包含两个表的数据源。由于过滤器应用于GridView,并且每个GridView只能绑定到单个表,因此此过滤条件不能应用于GridView。所以,你有两种解决方案。首先,我认为最好的方法是将此过滤器应用到网格的基础数据源。其次是基于GridView过滤的解决方案。在这种情况下,您应该在主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"); 
} 

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