【问题标题】:Filter Two DataGridViews bound to the same DataTable过滤绑定到同一个 DataTable 的两个 DataGridView
【发布时间】:2014-10-14 17:46:26
【问题描述】:

Windows 窗体应用程序,c#-4.0

我在一个表单中有两个 DataGridView,它们都绑定到同一个 DataSet 和 Table,我需要过滤每个 DataGridView 以获得单独的值。

DataGridView 1 是 dgvSerials,DataGridView 2 是 dgvAssignedSerials,对于 dgvAssignedSerials,我需要显示所有记录是 列 stat == "I" OR "O" 对于dgvSerials,我需要显示 column stat != "I" OR "O"

的所有记录

到目前为止我的代码。 (注意:到目前为止,我只尝试过滤 dgvAssignedSerials 网格。)

    string serialFilter = string.Format("{0} = '{1}'", "stat", "I");
    serialFilter += string.Format(" OR [{0}] = '{1}'", "stat", "O");
    (dgvAssignedSerials.DataSource as DataTable).DefaultView.RowFilter = serialFilter;

另外,我想隐藏stat列,不知道会不会影响过滤功能。

现在,使用上面的代码,我的应用程序在(dgvAssignedSerials.DataSource 行上简单地完成。如果我在该行和下一行放置断点,它永远不会到达下一行。没有错误,它只是完成并显示表单,并且 DataGridView 没有被过滤。

【问题讨论】:

    标签: c#-4.0 datagridview filter


    【解决方案1】:

    好的,我想我已经弄清楚了。

    当我发布这个问题时,我试图在我将 DataGridViews 绑定到它们的源之后执行我的过滤器,并且我试图在表单加载事件中执行所有操作。不确定后者是否是问题的一部分,但我认为为什么它对我不起作用,我在绑定 DataGridViews 后尝试过滤。

    为了解决这个问题,我做了以下操作。

    首先,我创建了一个单独的函数来绑定和过滤每个DataGridView,其次,我首先声明了一个DataView,过滤了DataView,然后将我的DataGridView 绑定到了过滤后的DataView

    DataGridView 1 示例:

        string serialFilter = string.Format("stat IN ('P', 'N')");
        DataView dvSerials = new DataView(_dtSerial);
        dvSerials.RowFilter = serialFilter;
        dgvSerials.DataSource = dvSerials;
    

    DataGridView 2 示例:

        string assignSerFilter = string.Format("stat IN ('I', 'O')");
        DataView dvAssignedSerials = new DataView(_dtSerial);
        dvAssignedSerials.RowFilter = assignSerFilter;
        dgvAssignedSerials.DataSource = dvAssignedSerials;
    

    它现在就像一个魅力。

    【讨论】:

      猜你喜欢
      • 2012-05-05
      • 2020-10-16
      • 1970-01-01
      • 2015-12-14
      • 1970-01-01
      • 2013-06-20
      • 1970-01-01
      • 1970-01-01
      • 2012-10-13
      相关资源
      最近更新 更多