如何使用带有MS Access的文本框在c#datagrid中进行行筛选

如何使用带有MS Access的文本框在c#datagrid中进行行筛选,c#,ms-access,C#,Ms Access,我试着在youtube上看教程。C#一直在回答“缺少操作数”,希望有人能帮助我 connection.Open(); OleDbCommand command = connection.CreateCommand(); command.CommandType = CommandType.Text; command.CommandText = "select * from Table2 where Last_Name ='" + textBox12 + "'"; command.ExecuteNo

我试着在youtube上看教程。C#一直在回答“缺少操作数”,希望有人能帮助我

connection.Open();
OleDbCommand command = connection.CreateCommand();
command.CommandType = CommandType.Text;
command.CommandText = "select * from Table2 where Last_Name ='" + textBox12 + "'";
command.ExecuteNonQuery();
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter(command);
da.Fill(dt);
dataGridView1.DataSource = dt;
connection.Close();

正如其他人所说,很难预测您的代码。如果它是WinForms应用程序,并且您有一个文本框(比如命名的SearchTextBox)和dataGridView(比如称为dataGridView1),并且在dataGridView1(也在dataTable中)中有一个名为FirstName的列,那么您的代码应该如下所示:

private void SearchTextBox_TextChanged(object sender, EventArgs e)
{
    var bd = (BindingSource)dataGridView1.DataSource;
    var dt = (DataTable)bd.DataSource;
    dt.DefaultView.RowFilter = string.Format("FirstName like '%{0}%'", SearchTextBox.Text.Trim().Replace("'", "''"));    
    dataGridView1.Refresh();
}

你在使用winforms吗?如果是,请标记它。请发布更多详细信息,如表架构和不起作用的代码。请参阅:您所说的Rowfilter到底是什么意思?如果出现错误,请添加一些代码。System.InvalidCastException:“无法将类型为”System.Data.DataTable“的对象强制转换为类型为”System.Windows.Forms.BindingSource“。您已经有名为dt的DataTable。在我发布此回复后,您添加了代码段。无论如何,在命令da.Fill(dt)之后,应该使用该命令筛选行dt.DefaultView.RowFilter=string.Format(“姓氏,如“{0}%”,SearchTextBox.Text.Trim().Replace(“,”);