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