2014-07-16 76 views
1

因此,我甚至不確定這是否可能,因爲我沒有發現其他人這樣做。但我需要能夠通過在文本框中輸入員工編號來更改datagridview結果。我會點擊一個提交按鈕,它將使用輸入的文本來僅提取該員工信息。這是可能的,我該怎麼做?根據來自文本框的輸入更改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]"]; 
       } 

回答

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

+0

非常感謝你!我知道它沒有使用適配器,但我無法弄清楚如何切換它。 – JoeMarvel

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(); 
      } 

} 
+0

感謝您的幫助。我遇到了線dataGridView1.BindGrid()的問題;它說它不包含它的定義。 – JoeMarvel