使用 TextBox 过滤 Datagridview 行
Filter Datagridview rows using TextBox
我有一个绑定的 datagridView,我想使用 TextBox 值过滤它。
我使用了这个代码:
private void ChercheStextBox_TextChanged(object sender, EventArgs e)
{
try
{
((DataTable)dataGridView3.DataSource).DefaultView.RowFilter = string.Format("LibService like '%{0}%'", ChercheStextBox.Text.Trim().Replace("'", "''"));
}
catch
{
}
}
但是即使我使用了相同的代码,此代码也不会过滤 datagridView
在另一个 datagridView 中,它工作得很好。我不知道
在哪里
我的代码有错误吗?
提前致谢。
编辑:
我删除了 try catch 并且收到了这个错误消息:
unable to cast object of type 'system.windows.forms.bindingsource' to type 'system.data.datatable'
我该如何解决?
DataSource 是 BindingSource 类型而不是 DataTable,所以试试这个代码:
private void ChercheStextBox_TextChanged(object sender, EventArgs e)
{
var bd = (BindingSource)dataGridView3.DataSource;
var dt = (DataTable)bd.DataSource;
dt.DefaultView.RowFilter = string.Format("LibService like '%{0}%'", ChercheStextBox.Text.Trim().Replace("'", "''"));
dataGridView3.Refresh();
}
我认为你需要使用这个方法:
public void ChercheStextBox_TextChanged(object sender, EventArgs e)
{
//NASSIM LOUCHANI
BindingSource bs = new BindingSource();
bs.DataSource = dataGridView3.DataSource;
bs.Filter = string.Format("CONVERT(" + dataGridView3.Columns[1].DataPropertyName + ", System.String) like '%" + ChercheStextBox.Text.Replace("'", "''") + "%'");
dataGridView3.DataSource = bs;
}
您只需要使用组合框更改列号...只需发挥您的想象力。
谢谢。
我有一个绑定的 datagridView,我想使用 TextBox 值过滤它。
我使用了这个代码:
private void ChercheStextBox_TextChanged(object sender, EventArgs e)
{
try
{
((DataTable)dataGridView3.DataSource).DefaultView.RowFilter = string.Format("LibService like '%{0}%'", ChercheStextBox.Text.Trim().Replace("'", "''"));
}
catch
{
}
}
但是即使我使用了相同的代码,此代码也不会过滤 datagridView
在另一个 datagridView 中,它工作得很好。我不知道
在哪里我的代码有错误吗?
提前致谢。
编辑:
我删除了 try catch 并且收到了这个错误消息:
unable to cast object of type 'system.windows.forms.bindingsource' to type 'system.data.datatable'
我该如何解决?
DataSource 是 BindingSource 类型而不是 DataTable,所以试试这个代码:
private void ChercheStextBox_TextChanged(object sender, EventArgs e)
{
var bd = (BindingSource)dataGridView3.DataSource;
var dt = (DataTable)bd.DataSource;
dt.DefaultView.RowFilter = string.Format("LibService like '%{0}%'", ChercheStextBox.Text.Trim().Replace("'", "''"));
dataGridView3.Refresh();
}
我认为你需要使用这个方法:
public void ChercheStextBox_TextChanged(object sender, EventArgs e)
{
//NASSIM LOUCHANI
BindingSource bs = new BindingSource();
bs.DataSource = dataGridView3.DataSource;
bs.Filter = string.Format("CONVERT(" + dataGridView3.Columns[1].DataPropertyName + ", System.String) like '%" + ChercheStextBox.Text.Replace("'", "''") + "%'");
dataGridView3.DataSource = bs;
}
您只需要使用组合框更改列号...只需发挥您的想象力。
谢谢。