C# 有没有办法根据2列的值过滤超级网格?

C# 有没有办法根据2列的值过滤超级网格?,c#,winforms,infragistics,ultrawingrid,C#,Winforms,Infragistics,Ultrawingrid,假设我有一个带有Foo和Bar列的InfrasticUltraGrid。是否可以筛选表格,以便只显示Foo和Bar不相等的行 例如,如果我有以下数据: Foo Bar -------- 0.1 0.1 0.1 0.2 0.2 0.2 过滤器将隐藏第一行和第三行。您应该能够从网格设计器中执行此操作 使用公式[Foo]创建一个新的布尔列=[Bar]到您的数据源 将隐藏列添加到网格中,并设置网格的DisplayLayout.Override.RowFilterMode=RowFilterMo

假设我有一个带有Foo和Bar列的Infrastic
UltraGrid
。是否可以筛选表格,以便只显示Foo和Bar不相等的行

例如,如果我有以下数据:

Foo  Bar
--------
0.1  0.1
0.1  0.2
0.2  0.2

过滤器将隐藏第一行和第三行。

您应该能够从网格设计器中执行此操作

  • 使用公式
    [Foo]创建一个新的布尔列=[Bar]
    到您的数据源
  • 将隐藏列添加到网格中,并设置网格的
    DisplayLayout.Override.RowFilterMode=RowFilterMode.AllRowsInBand
  • grid.DisplayLayout.Band[].ColumnFilters
    中,添加一个新的
    FilterLogicalOperator.,
    以及新列的
    FilterConditions.add(FilterComparisonOperator.Equals,true)

  • 由于您不允许用户切换此筛选器并且正在使用DataTable,因此最简单的解决方案是筛选DataTable而不是网格

    例如,如果您的DataTable是fooData,您将使用以下命令:

    fooData.DefaultView.RowFilter = "Foo <> Bar";
    
    fooData.DefaultView.RowFilter=“Foo-Bar”;
    
    它比看起来更简单,我相信您不必创建其他列或其他内容:

    UltraGridColumn fooColumn = Grid.DisplayLayout.Bands[0].Columns["Foo"];
    UltraGridColumn barColumn = Grid.DisplayLayout.Bands[0].Columns["Bar"];
    ColumnFilter fooColumnFilter = fooColumn.Band.ColumnFilters[fooColumn];
    fooColumnFilter.ClearFilterConditions();
    fooColumnFilter.FilterConditions.Add(FilterComparisionOperator.NotEquals, barColumn);
    

    我正在使用附加到
    数据表的绑定源。将未绑定列添加到UltraGrid是否可行?我认为无法从网格设计器@zneak对未绑定列执行操作,您可能可以通过编程方式执行此操作。我不认为您可以定义一个使用多列值的
    FilterCondition
    ,因此我建议创建一个新列,说明值是否不等,并对其进行筛选。是的,您应该能够使用未绑定列。您可以在InitializeRow事件中设置该值。在最新的示例中,UltraGridFilterUIProvider控件似乎能够使用不同的列进行筛选。该示例名为
    Excel风格过滤
    @zneak既然网格的UI默认不提供此功能,您打算如何通过UI公开此示例?如果在表单的网格外部添加自己的按钮或选项,那么过滤DataTable比过滤网格更简单。在本例中,您将在DataTable的DefaultView上设置RowFilter。例如,如果您的数据表是fooData,您将使用以下命令:fooData.DefaultView.RowFilter=“Foo-Bar”@alhalama,我不会通过UI公开它。用户不可能切换此筛选器。有趣的想法,我将尝试此方法。嗯,现在我回到代码,我意识到其中一列是未绑定的。如果其中一列是未绑定的列,然后,您可能需要使用Jeff Bridgman建议的方法,或者在绑定网格以包含附加列之前修改DataTable。你知道设计师是否也能做到这一点吗?