在过滤的数据杂志视图上过滤数据


DataTable dt = new DataTable();
private void txtSearch_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Return)
        {
            DataView dv = dt.DefaultView;
            dv.RowFilter = string.Format("Description LIKE '%{0}%' OR Manufacturer LIKE '%{0}%' OR ManufacturerItemNumber LIKE '%{0}%' OR ItemNumber LIKE '%{0}%'", txtSearch.Text);
                dataGridView.DataSource = dv;                   
                dataGridView.Update();
                dataGridView.Refresh();
        }
    }

首先,我连接到显示所有记录的SQL数据库。然后我运行此代码。当我在文本框中输入某些内容时,效果很好。但是,更重要的是,我想通过添加额外的文本框来缩小过滤结果。使用第二个文本框,我想从第一个文本框过滤我的过滤数据。

private void Descrip_txtbox_KeyDown(object sender, KeyEventArgs e)
    {
        DataView dv = dt.DefaultView;
        dt = dv.ToTable();
        if (e.KeyCode == Keys.Return)
        {       
         dv.RowFilter = string.Format("Description LIKE '%{0}%' OR Manufacturer LIKE '%{0}%' OR ManufacturerItemNumber LIKE '%{0}%' OR ItemNumber LIKE '%{0}%'", Descrip_txtbox.Text);
        dataGridView.DataSource = dv

}

我想从txtsearch Textbox中获取第一个搜索的过滤数据,然后再次使用下一个文本框过滤。

有人可以帮我吗?谢谢。

假设您想要一个和过滤器,它看起来像这样:

DataView dv = ((DataView)dataGridView.DataSource);  
var secondFilter = string.Format("Description LIKE '%{0}%' OR Manufacturer LIKE '%{0}%' OR ManufacturerItemNumber LIKE '%{0}%' OR ItemNumber LIKE '%{0}%'", Descrip_txtbox.Text);
if ( dv.RowFilter == null || dv.RowFilter.Length == 0 )
    dv.RowFilter = secondFilter;
else
    dv.RowFilter = "(" + dv.RowFilter & ") AND " + secondFilter;
dataGridView.DataSource = dv;

和括号和括号和和和和必需

发生的事情是,您将新的value分配给dv.RowFilter,这将清除以前的过滤器。

您可以将新过滤器与AND相连,例如:

dv.RowFilter += " AND " + string.Format("Description LIKE '%{0}%' OR Manufacturer LIKE '%{0}%' OR ManufacturerItemNumber LIKE '%{0}%' OR ItemNumber LIKE '%{0}%'", Descrip_txtbox.Text);

最新更新