如何通过Windows窗体C中的按钮单击通过DataGridView更新数据库中的布尔字段#

时间:2016-12-29 17:49:47

标签: c# winforms datagridview

DataGridView显示我的数据库表中的值。在此表中考虑我有8个字段,我想通过DataGridView仅更新2个特定字段。在这两个字段中,一个字段是布尔类型 - 因此当数据库表中的值为“1”时,它在DataGridView中显示为复选框。因此,当我取消检查时,它应该更新值为“0”的数据库表,第二个字段是一个int类型。

在DataGridView中对这两个特定字段(单元格)进行更改后,我应该能够通过BUTTON单击更新数据库表(窗体C#)。

任何人都可以帮我处理这个编码部分或如何解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

在按钮点击处理程序中,您需要执行以下操作:

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

答案 1 :(得分:0)

我能够以这种方式实现。希望这有帮助。 如果你有一个带有布尔/比特字段的datagridview,并且想要在datagridview中根据checked / Unchecked事件更新数据库中的字段,可以编写这段代码(在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");
}

注意:我已经在表单load中声明了所需的变量,并为sql连接字符串创建了一个类,只要需要就调用它。