我有一个Windows表单项目C#
我添加了一个DataGridView并添加了一个绑定到数据集以及复选框到 加 编辑 删除
现在我可以编辑单元格,但是如何在编辑后保存?
答案 0 :(得分:0)
protected void myGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string id=// To find key of current row. e.g: myGridView.DataKeys[e.RowIndex].Value.ToString();
string text=//To find the text value from the current row.
conn.Open();
SqlCommand UpdateCmd = new SqlCommand(" your query");
UpdateCmd.ExecuteNonQuery();
conn.Close();
GridView1.EditIndex = -1; //After updating, please set EditIndex and re-bind the GridView.
BindGridView();
}
您可以从以下链接查看完整的功能:
http://www.aspdotnetcodes.com/GridView_Insert_Edit_Update_Delete.aspx
希望它有所帮助。
答案 1 :(得分:0)
试试这个:
dgv.CellBeginEdit += dgv_CellBeginEdit;
dgv.CellValidating += dgv_CellValidating;
dgv.CellEndEdit += dgv_CellEndEdit;
private void dgv_CellBeginEdit(Object sender, DataGridViewCellCancelEventArgs e)
{
//Here we save a current value of cell to some variable, that later we can compare with a new value
//For example using of dgv.Tag property
if(e.RowIndex >= 0 && e.ColumnIndex >= 0)
{
this.dgv.Tag = this.dgv.CurrentCell.Value;
//Or cast sender to DataGridView variable-> than this handler can be used in another datagridview
}
}
private void dgv_CellValidating(Object sender, DataGridViewCellValidatingEventArgs e)
{
//Here you can add all kind of checks for new value
//For exapmle simple compare with old value and check for be more than 0
if(this.dgv.Tag = this.dgv.CurrentCell.Value)
e.Cancel = true; //Cancel changes of current cell
//For example used Integer check
int32 iTemp;
if (Int32.TryParse(this.dgv.CurrentCell.Value, iTemp) = True && iTemp > 0)
{
//value is ok
}
else
{
e.Cancel = True;
}
}
Private Sub dgvtest1_CellEndEdit(Object sender, DataGridViewCellEventArgs e)
{
//Because CellEndEdit event occurs after CellValidating event(if not cancelled)
//Here you can update new value to database
}
datagridview cell edit and save functionality in windows forms?
查看上面的帖子了解更多详情。