更新一个DataGridView字段时,如何更改另一个字段?

时间:2015-12-06 10:48:59

标签: c# winforms datagridview

我的SQL表中有两个字段:NameStatus。当我在datagridview和数据集上更新或更改Name的任何内容时。它也应该更新Status。我该怎么做?

1 个答案:

答案 0 :(得分:2)

你有很多选择。

例如:

  • 您可以使用Trigger在SQL Server中执行此操作。
  • 您可以处理DataGridView的CellValueChanged事件。
  • 如果您使用的是类型化数据集,则可以覆盖数据表的OnColumnChanged。
  • 您可以处理数据表的ColumnChanged事件。

CellValueChanged示例:

根据您的评论作为使用CellValueChanged的示例:

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    //Suppose 0 is the index of Name column and 1 is the index of Status Column
    //We check if the change is in a datagrid view row and in name column 
    //Then we change value of Status column.
    if (e.RowIndex >= 0 && e.ColumnIndex == 0)
        this.dataGridView1.Rows[e.RowIndex].Cells[1].Value = "Modified";
}

即使您没有将Status列添加到网格中,也可以使用此类代码进行更改:

((DataRowView)this.dataGridView1.Rows[e.RowIndex].DataBoundItem)["Status"] = "Modified";

ColumnChanged示例:

作为ColumnChanged的示例:

void table1_ColumnChanged(object sender, DataColumnChangeEventArgs e)
{
    //Check if the event is raised for Name column
    if (e.Column.ColumnName == "Name")
        e.Row["Status"] = "Modified";
}