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);