一旦WPF DataGrid单元格被编辑,MySQL就会更新

时间:2014-10-17 14:43:52

标签: c# mysql wpf datagrid

我有一个从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);

1 个答案:

答案 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;
    }