Поэтому я даже не уверен, что это возможно, потому что я не нашел, чтобы кто-то еще делал это так. Но мне нужно изменить результаты 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]"];
}
Вы не используете параметр в своем адаптере:
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. У меня есть пример: Самый быстрый способ поиска в коллекции строк
Вы можете связать событие 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();
}
}