在我的winforms应用程序中,我有一个文本框,在输入时过滤数据网格(在键入时搜索),这很好用,我还有另一个按钮通过两个组合框应用过滤器。
此按钮将连接到datagridview的数据表的副本作为数据源,并将datagridviews数据源更改为数据表的副本。
当通过按钮应用此过滤器时,我可以看到另一个按钮(称为btnRemoveFilterFserie),通过将数据源更改回原始数据表来“删除”过滤器。
当btnRemoveFilterFserie.Visible == true时,表示应用了其他过滤器,我想在DS1Filter3数据表上键入时应用搜索,但是它返回错误,指出此行未找到[Description]列
DataRow[] result = DS1Filter.Select(outputInfo);
我希望理解我的解释不要混淆。
这是我使用的代码。
private void txtFserieSearch_KeyUp(object sender, KeyEventArgs e)
{
string outputInfo = "";
string[] keyWords = txtFserieSearch.Text.Split(' ');
foreach (string word in keyWords)
{
if (outputInfo.Length == 0)
{
outputInfo = "(Description LIKE '%" + word + "%' OR `Function Value` LIKE '%" +
word + "%')";
}
else
{
outputInfo += " AND (Description LIKE '%" + word + "%' OR `Function Value` LIKE '%" +
word + "%')";
}
}
if (btnRemoveFilterFserie.Visible == true)
{
//Applies the filter to the DataView
DataRow[] result = DS1Filter.Select(outputInfo);
DataTable DS1Filter3 = DS1Filter.Clone();
foreach (DataRow row in result)
{
DS1Filter3.ImportRow(row);
}
dataGridFserie.DataSource = DS1Filter3;
}
else if (btnRemoveFilterFserie.Visible == false)
{
DataRow[] result = DS1.Select(outputInfo);
DataTable DS1Filter2 = DS1.Clone();
foreach (DataRow row in result)
{
DS1Filter2.ImportRow(row);
}
dataGridFserie.DataSource = DS1Filter2;
}
}