Winform中datagridview单元格修改之后提交内容到datagridview绑定的dataTable代码
时间: 2024-02-04 12:03:09 浏览: 156
在 Winform 中,可以通过以下步骤将 DataGridView 中修改的内容提交到绑定的 DataTable 中:
1. 在 DataGridView 中添加 CellValueChanged 事件的处理程序,该事件会在单元格的值发生改变时触发。
2. 在 CellValueChanged 事件处理程序中,获取修改后的单元格的值和列名。
3. 使用 Rows 属性获取 DataGridView 中所有行的集合,遍历每一行,使用 Cells 属性获取该行中指定列的单元格,通过比较单元格的列名和修改后的列名,确定要修改的单元格。
4. 使用 DataTable 中的 Rows 属性获取所有行的集合,遍历每一行,通过比较每行的主键值来确定要修改的行。
5. 修改 DataTable 中的对应单元格的值。
6. 调用 DataTable 的 AcceptChanges 方法,提交修改。
下面是示例代码:
```csharp
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0 && e.ColumnIndex >= 0) // 判断修改的是单元格而不是行或列标题
{
string columnName = dataGridView1.Columns[e.ColumnIndex].Name;
string cellValue = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
foreach (DataRow row in dataTable1.Rows)
{
if (row.RowState != DataRowState.Deleted && row.RowState != DataRowState.Detached) // 排除已删除或脱离 DataTable 的行
{
if (row[columnName].ToString() == cellValue) // 找到要修改的单元格
{
row[columnName] = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value; // 修改 DataTable 中的对应单元格的值
break;
}
}
}
dataTable1.AcceptChanges(); // 提交修改
}
}
```
阅读全文