2016-12-29 67 views
1

DataGridView顯示我的數據庫表中的值,考慮在此表中我有8個字段,我想通過DataGridView只更新2個特定字段。在這兩個字段中,一個字段是布爾類型的 - 因此當數據庫表中的值爲「1」時,它顯示爲DataGridView中的複選框。所以當我取消檢查時,它應該更新數據庫表的值爲「0」,第二個字段是一個int類型。如何通過在Windows窗體C中按鈕單擊DataGridView更新數據庫中的布爾字段#

一旦我在DataGridView中對這兩個特定字段(單元格)進行了更改,我應該可以通過按鈕單擊(Windows Form C#)來更新數據庫表。

任何人都可以幫助我處理這個編碼部分或如何處理這個?

回答

0

在您的按鈕單擊處理程序,你會想要做這樣的事情:

 foreach (DataGridViewRow row in dg.Rows) 
      { 
       if (Convert.ToBoolean(row["checkColumnName"].ToString()) 
       { 
        // do checked thing 
       } 
       else 
       { 
        // do unchecked thing 
       } 
      } 
+0

這似乎並不奏效。 「dataGridView.items」 - 項目會引發錯誤。我在這裏錯過了什麼? –

+0

實際上,該代碼來自Telerik示例。沒有幫助。嘗試編輯我爲DataGridView。 – Forklift

0

我能夠以這種方式來實現的。希望這個幫助。 如果你有一個帶有Boolean/Bit字段的datagridview,並且想根據checked/Unchecked事件更新數據庫中的字段,你可以在datagridview中編寫這段代碼(在Update Button click事件中更新多個記錄布爾字段)

try 
{ 
foreach (DataGridViewRow row in dataGridView1.Rows) //looping through each records in datagridview 
{ 
    //Update query 
    strQuery = @"Update TableA Set ActiveInactive = @ActiveInactive --Boolean field 
       Where Id = @Id "; 

    cmd = new SqlCommand(strQuery, // provide sql connection string here)); 
    cmd.Parameters.AddWithValue("@Id", row.Cells["SystemIdentifier"].Value); //reading Id of a particular record 
    cmd.Parameters.AddWithValue("@ActiveInactive", SqlDbType.Bit).Value = (Convert.ToBoolean(row.Cells["ActiveInactive"].Value) ? 1 : 0); 
    //reading Boolean field of a particular record 
    cmd.ExecuteNonQuery(); 
} 
    MessageBox.Show("The records in the table has been updated.", "Information"); 

} 
catch (Exception err) 
{ 
    MessageBox.Show(err.Message.ToString(), "Error"); 
} 

注:我宣佈在窗體加載所需的變量,並創造了SQL連接字符串一類被稱爲每當需要英寸

相關問題