过滤两个绑定到同一DataTable的DataGridView

时间:2014-10-14 17:46:26

标签: c#-4.0 datagridview filter

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

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

DataGridView 1为dgvSerials,DataGridView 2为dgvAssignedSerialsdgvAssignedSerials我需要显示所有记录 列stat ==“I”OR“ O“ dgvSerials我需要显示 列stat!=”I“或”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不会被过滤。

1 个答案:

答案 0 :(得分: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;

它现在就像一个魅力。