【问题标题】:Filter and search DataGridView connected to a MS Access database in C#在 C# 中过滤和搜索连接到 MS Access 数据库的 DataGridView
【发布时间】:2014-08-16 05:32:59
【问题描述】:

我使用此代码过滤和搜索连接到 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;

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我将 % 替换为 * 但没有任何变化
    • 如果你在 LIKE 语句中加入一个“真实值”,你会得到什么?例如,删除“%”和/或“*”,使其显示为 LIKE 'value' 是否返回任何内容?
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      将所有这些代码放在文本框键中并进行一些更改,例如数据库和字段名称

      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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-28
        • 2015-05-27
        • 1970-01-01
        • 2011-01-10
        • 1970-01-01
        • 1970-01-01
        • 2018-01-30
        • 2018-03-11
        相关资源
        最近更新 更多