Windows窗体应用程序,c#-4.0
我在一个表单中有两个DataGridViews,它们都绑定到同一个DataSet和Table,我需要过滤每个DataGridView以获取不同的值。
DataGridView 1为dgvSerials
,DataGridView 2为dgvAssignedSerials
,dgvAssignedSerials
我需要显示所有记录 列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不会被过滤。
答案 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;
它现在就像一个魅力。