所以我甚至不确定这是否可行,因为我没有找到其他人这样做。但我需要通过在文本框中输入员工编号来更改datagridview结果。我会点击一个提交按钮,它将使用输入的文本仅提取该员工信息。这是可能的,我该怎么做?
这是我到目前为止所做的代码。唯一的问题是它没有将textbox1中的文本放入查询中。还有另一种方法吗?
string query = "SELECT TellerNum, SessionName, PrincipleName, SessionDate, Comments, SessionKey FROM [SESSION] WHERE TellerNum = @teller ORDER BY TellerNum;";
using (OleDbCommand cmd = new OleDbCommand(query, con))
{
cmd.Parameters.AddWithValue("@teller", textBox1.Text);
cmd.ExecuteNonQuery();
OleDbDataAdapter da = new OleDbDataAdapter(query, con);
DataSet ds = new DataSet();
da.Fill(ds, "[Session]");
dataGridView1.DataSource = ds.Tables["[Session]"];
}
答案 0 :(得分:1)
您没有使用适配器上的参数:
DataTable dt = new DataTable();
string query = "SELECT TellerNum, SessionName, PrincipleName, SessionDate, Comments, SessionKey FROM [SESSION] WHERE TellerNum = @teller ORDER BY TellerNum;";
using (OleDbDataAdapter da = new OleDbDataAdapter(query, con)) {
da.SelectCommand.Parameters.AddWithValue("@teller", textBox1.Text);
da.Fill(dt);
}
dataGridView1.DataSource = dt;
或者,您应该查看DataViews来过滤DataGridView数据。我在这里有一个例子:Fastest way to search in a string collection
答案 1 :(得分:0)
您可以将OnTextChanged事件附加到该文本框(textBox1)。或者,您可以单击一个按钮来加载绑定网格事件或任何您希望它执行的操作。
然后在您的代码中,您将有一个事件,如下所示:
protected void textBox1_TextChanged(object sender, EventArgs e)
{
BindGrid(textBo1.Text);
}
private void BindGrid(string teller)
{
using (OleDbCommand cmd = new OleDbCommand(query, con))
{
cmd.Parameters.AddWithValue("@teller", teller);
cmd.ExecuteNonQuery();
OleDbDataAdapter da = new OleDbDataAdapter(query, con);
DataSet ds = new DataSet();
da.Fill(ds, "[Session]");
dataGridView1.DataSource = ds.Tables["[Session]"];
dataGridView1.BindGrid();
}
}