我有一个从MySQL查询生成的DataGrid。我希望能够通过修改DataGrid直接编辑数据库。基本上我需要的是在用户编辑完单元格后生成这样的字符串:
伪代码:
“UPDATE current_table SET current_column_name = new_cell_value WHERE id =编辑行的隐藏第一个单元格中的数字”
实现这一目标的最简单方法是什么?
我已经尝试查看DataGrid属性和事件,但到目前为止我找不到任何“CellEditEnded”事件,也无法找到如何获取行的第一个单元格中的新值或id。
编辑: 好的,我已经取得了一些进展,我现在能够获得id和列名称,但问题是我无法获得新的单元格值。我认为问题是此代码在CellEditEnding-event中触发,因此尚未提交更改。我该如何解决这个问题?
DataRowView dataRow = (DataRowView)gameDatagrid.SelectedItem;
int index = gameDatagrid.CurrentCell.Column.DisplayIndex;
string columnName = gameDatagrid.CurrentCell.Column.Header.ToString();
string cellValue = dataRow.Row.ItemArray[index].ToString();
string id = dataRow.Row.ItemArray[0].ToString();
MessageBox.Show(id + " : " + columnName + " : " + cellValue);
答案 0 :(得分:0)
感谢有用的评论,我能够解决这个问题。完整代码如下:
private void gameDatagrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
TextBox t = e.EditingElement as TextBox;
DataRowView dataRow = (DataRowView)gameDatagrid.SelectedItem;
int index = gameDatagrid.CurrentCell.Column.DisplayIndex;
string columnName = gameDatagrid.CurrentCell.Column.Header.ToString();
string newValue = t.Text;
int id = (int)dataRow.Row.ItemArray[0];
string query = "UPDATE table_name SET " + columnName + "=\"" + newValue + "\" WHERE id=" + id;
}