键入时过滤

时间:2013-10-21 11:34:22

标签: c# datagridview

在我的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;
        }
    }

0 个答案:

没有答案