DataGridView单元格编辑和更新DB(C#)

时间:2015-03-24 18:33:36

标签: c# sql-server winforms datagridview

我有一个在dgv中编辑单元格的功能。这就是问题所在。我只能编辑一个单元格。

到目前为止,这是我的代码:

        private void datagridview1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
        Connection();
        sqlconnection.Open();

        this.datagridview1.Rows[e.RowIndex].Selected = true;
        this.rowIndex1 = e.RowIndex;
        this.datagridview1.CurrentCell = this.datagridview1.Rows[e.RowIndex].Cells[1]; //1 = only quantity can be edited, 0 = only item can be edited

        sqlcmd = new SqlCommand("UPDATE inventory_table SET item = @item, quantity = @quantity WHERE id= " + this.datagridview1.Rows[this.rowIndex1].Cells["id"].Value, sqlconnection);
        sqlcmd.Parameters.AddWithValue("@item", this.datagridview1.Rows[this.rowIndex1].Cells["item1"].Value);
        sqlcmd.Parameters.AddWithValue("@quantity", this.datagridview1.Rows[this.rowIndex1].Cells["quantity1"].Value);
        sqlcmd.ExecuteNonQuery();

        sqlconnection.Close();
        }

我错过了什么?我能做些什么才能编辑多个dgv单元并让它们在DB中更新?

2 个答案:

答案 0 :(得分:0)

我认为问题是由于使用了错误的事件。您似乎想在用户完成编辑行时执行更新。

但是您的代码存在于任何单元格完成编辑后触发的事件中。我不能肯定你想要什么样的事件。这取决于您的规格。

但我敢打赌,RowValidated活动将满足您的需求。如果没有,请查看RowStateChanged事件。 (并尝试该事件的示例代码。它应该可以帮助您了解事件何时触发。)

答案 1 :(得分:0)

  

您无法使用gridview更新或删除gridview中的多行   编辑或删除方法,我相信没有默认事件   gridview更新或删除多条记录。

     

但您可以通过使用其他程序来实现此目的:

     

1>您可以在gridview页脚或网格外部使用按钮   将所有更新后的值放入网格单元写入代码后查看   footer_button单击以更新gridview中的所有记录。    2>您可以在网格上使用jQuery / ajax控件来更新textbox_leave事件上的网格记录。

您可以查找解决方案的一些示例