【问题标题】:C# Filter search Datatable with multiple rows using one textboxC#使用一个文本框过滤搜索具有多行的数据表
【发布时间】:2017-03-13 10:48:22
【问题描述】:

我为我的考勤监控系统创建了一个过滤器搜索,它按员工姓名搜索,但不搜索其他字段,我想我会使用 LIKE 关键字但我不知道该怎么做。这是我的代码

private void textBox1_TextChanged(object sender, EventArgs e)
{ 
    connection.Open();
    OleDbCommand command = new OleDbCommand();
    command.Connection = connection;
    string query = "SELECT * FROM tblEmployee WHERE [Firstname] like @1";
    command.parameters.AddWithValue("@1",textBox1.Text);
    command.CommandText = query;
    OleDbDataAdapter da = new OleDbDataAdapter(command);
    DataTable dt = new DataTable();
    da.Fill(dt);
    dataGridView1.DataSource = dt;
    dataGridView1.Update();
    dataGridView1.Refresh();
    connection.Close(); 
}

【问题讨论】:

  • 这段代码有什么问题?你有什么错误吗?
  • 您要过滤DataTable还是数据库?
  • command.parameters.AddWithValue("@1",string.Format("{0}%", textBox1.Text));这就是你想要的吗?
  • 如果您的应用程序变得更复杂,我建议在查询的控件、事件和参数中使用更具描述性的名称。维护起来会容易得多。
  • 尝试根据您的要求构建/连接您的查询与 if else

标签: c# select search datagridview datatable


【解决方案1】:

该行为与您编写的查询完全匹配,您应该重写查询以符合您的要求:

string query = "SELECT * FROM tblEmployee WHERE [Firstname] like '%' + @1 + '%' OR [OtherColumn] LIKE '%' + @1 + '%'";

顺便说一句,我稍微更改了您的 LIKE,使其表现得像“它确实包含 XXX”。

【讨论】:

  • 感谢您的帮助,我昨天刚刚通过了答辩 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-02
  • 2022-08-04
  • 1970-01-01
  • 2015-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多