我厌倦了使用文本框过滤datagridview,文本框包含在标签页中,但它不起作用,这里是代码:
private void textBox1_TextChanged(object sender, EventArgs e)
{
try
{
((DataTable)dataGridView1.DataSource).DefaultView.RowFilter = "like '%" + textBox1.Text.Trim() + "%' ";
}
catch (Exception) { }
}
答案 0 :(得分:18)
RowFilter
允许您根据列值指定过滤器 。因此LIKE
适用于特定列,而不适用于整行。所以你的病情应该是
"YourColumn like '%" + textBox1.Text.Trim() + "%'
另外,不要忘记TextBox可能包含'
字符,因此您需要将其转义:
"YourColumn like '%" + textBox1.Text.Trim().Replace("'", "''") + "%'
或者,清洁:
string.Format("YourColumn like '%{0}%'", textBox1.Text.Trim().Replace("'", "''"));
答案 1 :(得分:4)
尝试这是在寻找信件,无论该信件在哪里(开头,中间或结尾)
private void TextBox1_TextChanged(object sender, EventArgs e)
{
try
{
//this code is used to search Name on the basis of TextBox1.text
((DataTable)dataGridView1.DataSource).DefaultView.RowFilter = string.Format("Column_Name like '%{0}%'", TextBox1.Text.Trim().Replace("'", "''"));
}
catch (Exception)
{
}
}
这个从第一个字母开始搜索,然后逐个跟随。
try
{
((DataTable)dataGridViewX1.DataSource).DefaultView.RowFilter = "Column_Name like'" + textBox1.Text.Trim().Replace("'", "''") + "%'";
}
catch (Exception)
{
}