2014-10-17 1 views
0

MySQL 쿼리에서 생성 된 DataGrid가 있습니다. DataGrid를 수정하여 데이터베이스를 직접 편집 할 수 있기를 원합니다. 사용자가 셀 편집을 완료 한 후 기본적으로 내가 필요한이 같은 문자열을 생성하는 것입니다한 번만 MySQL 업데이트 WPF DataGrid 셀을 편집했습니다.

의사 :의 숨겨진 첫 번째 셀에

"UPDATE CURRENT_TABLE SET current_column_name = new_cell_value ID = 수 수정 된 행 "

가장 간단한 방법은 무엇입니까?

DataGrid 속성 및 이벤트를 살펴 보았지만 지금까지는 "CellEditEnded"이벤트를 찾을 수 없었고 새 값이나 행의 첫 번째 셀에있는 ID를 가져 오는 방법을 찾을 수 없었습니다.

편집 : 좋아, 지금은 ID와 열 이름을 얻을 수있게되었지만 문제는 내가 새 셀 값을 가져올 수 없다는 것입니다. 문제는이 코드가 CellEditEnding 이벤트에서 발생하므로 변경이 아직 커밋되지 않았다는 것입니다. 이 문제를 어떻게 해결할 수 있습니까?

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? 포럼 = wpf –

+0

모든 것이 매력처럼 작동합니다. Jossef에게 감사드립니다! – fnx

+0

Fo-shizzle my nizzle :) 질문에 대한 답변 게시 –

답변

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; 
    } 
관련 문제