2014-07-15 79 views
0

我有一個datagridview,我想通過在文本框中輸入員工編號進行編輯。然後它將僅更新該員工編號的datagridview。這是我的當前datagridview的代碼,用於從DB中的所有員工獲取信息。我需要能夠更改選擇語句,以便從文本框中拉出出納員號碼並將其插入到sql語句中。使用文本框更改datagridview數據

using (OleDbConnection con = new OleDbConnection(constring)) 
     { 
      try 
      { 
       con.Open(); 
      } 
      catch (Exception ex) { MessageBox.Show(ex.Message); } 
      //Build DataGridView 
      try 
      { 
       sqlAdapter = new OleDbDataAdapter("SELECT TellerNum, SessionName, PrincipleName, SessionDate, Comments, SessionKey FROM [SESSION] ORDER BY TellerNum;", con); 
       sqlCommand = new OleDbCommandBuilder(sqlAdapter); 

       dataset = new DataSet(); 
       sqlAdapter.Fill(dataset, "[Session]"); 
       dataGridView1.DataSource = null; 
       dataGridView1.DataSource = dataset.Tables["[Session]"]; 

       /*DataTable table1 = GetTable1Data(...); 
       DataTable table2 = GetTable2Data(...); 

       table1.Merge(table2, true);*/ 

       for (int i = 0; i < dataGridView1.Rows.Count; i++) 
       { 
        DataGridViewLinkCell linkCell = new DataGridViewLinkCell(); 
        dataGridView1[5, i] = linkCell; 
       } 

       //Change column names 
       foreach (DataGridViewColumn column in dataGridView1.Columns) 
       { 
        if (column.HeaderText == "TellerNum") 
         column.HeaderText = "Teller #"; 
        if (column.HeaderText == "SessionName") 
         column.HeaderText = "Session"; 
        if (column.HeaderText == "PrincipleName") 
         column.HeaderText = "Principle Taught"; 
        if (column.HeaderText == "SessionDate") 
         column.HeaderText = "Date of Session"; 
        if (column.HeaderText == "Comments") 
         column.HeaderText = "Comments About Session"; 
        if (column.HeaderText == "SessionKey") 
         column.HeaderText = " "; 
       } 
       dataGridView1.Columns[5].Visible = false; 

       // Resize the DataGridView columns to fit the newly loaded content. 
       dataGridView1.AutoResizeColumns(
        DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader); 

      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 

在過去,我已經能夠拉動信息從一個文本框是這樣的:

   string cmdstring = "UPDATE [EMPLOYEE] SET [Comments] = Comments + @comments WHERE [TellerNum] = @teller"; 
       using (OleDbCommand cmd = new OleDbCommand(cmdstring, con)) 
       { 
        cmd.Parameters.AddWithValue("@teller", comboBox14.Text); 
        cmd.Parameters.AddWithValue("@comments", textBox5.Text); 

        con.Open(); 
        cmd.ExecuteNonQuery(); 
        con.Close(); 
        MessageBox.Show("Submitted Successfully"); 

有沒有辦法從文本中提取信息,以確定哪些員工信息將顯示?

+2

對不起,你能解釋一下這個問題好一點嗎?我必須承認我不明白這個問題。 –

+0

我需要使用文本框編輯從我的數據庫中提取的數據。我希望能夠輸入員工編號並僅提取有關該員工的信息並將其顯示在datagridview中。我的第二個代碼片段只是爲了向你展示我的意思,通過從文本框中提取文本插入到我的sql查詢中。 – JoeMarvel

+0

那麼,你想要的是通過文本框中的員工編號來過濾datagridview? –

回答

0

你需要做的是在網格上方有一個組合框用於過濾。讓過濾器組合框填充cbxFilter_SelectedIndexChanged()上的gridView(根據數據庫中的某種相關字段查詢數據庫)。

一旦您獲得了所需的過濾信息,就可以使用文本框編輯數據庫@所選行中的信息。您提供的代碼將與此文本框相關。

這是一個搜索欄的示例。我對事物的命名約定表示歉意。你將能夠使用它作爲重要的參考。

private void txtSearch_EditValueChanged(object sender, EventArgs e) 
    { 
     try 
     { 
      sqlHelper.sqlconnection.Close(); 
     } 
     catch (Exception) 
     { 
      return; 
     } 
     try 
     { 
      sqlHelper.sqlconnection.Open(); 
      string search = txtSearch.Text; 
      string temp; 
      temp = sqlHelper.ReplaceValue(cbxWarehouse.Text, true); 
      string tableName = "dbo.db_" + temp; 
      SqlDataReader myReader = null; 

      SqlCommand sql = new SqlCommand("SELECT * FROM " + tableName + " WHERE (StoreNo LIKE'" + search + "') OR " + 
      "(Description LIKE '%" + search + "%') OR " + 
      "(Name LIKE '%" + search + "%') OR " + 
      "(ItemNo LIKE '%" + search + "%') OR " + 
      "(StoreName LIKE '%" + search + "') AND Assembly <> 1", sqlHelper.sqlconnection); 

      myReader = sql.ExecuteReader(); 
      DataTable dt = new DataTable(); 
      for (int i = 0; i < myReader.FieldCount; i++) 
      { 
       dt.Columns.Add(myReader.GetName(i), typeof(string)); 
      } 
      try 
      { 
       while (myReader.Read()) 
       { 
        DataRow row = dt.Rows.Add(); 
        for (int i = 0; i < myReader.FieldCount; i++) 
        { 
         string Val = myReader[i].ToString(); 
         row[i] = Val; 
        } 
       } 
       myReader.Close(); 
      } 
      finally 
      { 
       gridProducts.DataSource = dt; 
      } 
     } 
     catch 
     { 
      if (myReader != null) 
      { 
       if (!myReader.IsClosed) 
       { 
        myReader.Close(); 
       } 
      } 
     } 
    } 

您可以使用您通過文本框更新的代碼。

+0

如果您需要此代碼的幫助,我可以給您一些示例代碼。看起來你正在爲更多的工作理念而努力,而不是如何運作。查詢您的數據庫的通用搜索欄可能會對您感興趣。你需要的是一個過濾器,只要它拉動數據就無關緊要。一旦你有了,更新特定行的數據庫應該是直截了當的,因此你已經有了它的代碼。 – aguertin

+0

我會感謝您的搜索欄或過濾器的示例代碼。 – JoeMarvel

+0

謝謝你的代碼。讓我玩一會,然後我會告訴你結果是什麼。 – JoeMarvel

相關問題