2014-10-17 71 views
0

我有一個從MySQL查詢生成的DataGrid。我想能夠通過修改DataGrid直接編輯數據庫。基本上,我需要的是產生這樣的字符串用戶已完成編輯單元格後:MySQL更新一次WPF 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

看看https://social.msdn.microsoft.com/Forums/vstudio/en-US/e71304ed-22b1-4882-9f5c-d9e42ad97445/how-to -get-new-value-in-a-datagrid-cell-after-editing-cell?forum = wpf – 2014-10-17 15:18:18

+0

現在一切都像魅力一樣,謝謝Jossef! – fnx 2014-10-17 15:23:58

+0

Fo-shizzle my nizzle :)發佈你的問題的答案 – 2014-10-17 15:25:28

回答

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; 
    } 
相關問題