过滤并搜索连接到C#中的MS Access数据库的DataGridView

时间:2014-08-16 05:32:59

标签: c# search datagridview filter ms-access-2010

我使用此代码过滤和搜索连接到C#中MS Access数据库的DataGridView,但当我在文本框中输入任何内容时,DataGridView中的每一行数据都会消失 - 任何帮助?

此代码显示在datagridview

    connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\AMR\Desktop\ABBagain-Copy.accdb;
Persist Security Info=False;";
                connection.Open();
                OleDbCommand command = new OleDbCommand();
                command.Connection = connection;
                string query = "select * from Query1";

                command.CommandText = query;
                OleDbDataAdapter da = new OleDbDataAdapter(command);
                DataTable dt;
                dt = new DataTable();
                da.Fill(dt);
                dataGridView1.DataSource = dt;
                da.Fill(dscontects);
                connection.Close();

并在文本框中

DataView dv = new DataView(dt);
        dv.RowFilter = string.Format("SerialNumber LIKE '%{0}%'",textBox1.Text);
        table1DataGridView.DataSource = dv;

3 个答案:

答案 0 :(得分:0)

您是否尝试用*替换%?所以你的代码看起来像 dv.RowFilter = string.Format("SerialNumber LIKE '*{0}*'",textBox1.Text); 我说这是因为访问SQL通配符是*而不是%

我也假设你在text_changed事件上有文本框代码?我会考虑将其更改为不太频繁地访问数据库的内容。也许有一个按钮甚至是文本框退出事件。

答案 1 :(得分:0)

我用这个解决方案修复了它:

string query = "select * from RecordsSheet where [SerialNumber] like('" + textBox1.Text + "%')";

答案 2 :(得分:0)

将所有这些代码放在textbox keyup中并进行一些更改,如数据库和字段名称

string strProvider =“Provider = Microsoft.ACE.OLEDB.12.0; Data Source = Gym.accdb”;

      string strSql = "Select * from cust";

      OleDbConnection con = new OleDbConnection(strProvider);

      OleDbCommand cmd = new OleDbCommand(strSql, con);

      con.Open();

      cmd.CommandType = CommandType.Text;

      OleDbDataAdapter da = new OleDbDataAdapter(cmd);

      DataTable scores = new DataTable();

      da.Fill(scores);

      dglist.DataSource = scores;

      DataView dv = new DataView(scores);

      dv.RowFilter = string.Format("name LIKE '%{0}%'", txtsearch.Text);

      dglist.DataSource = dv;