2013-01-17 121 views
0

在我的Datagrid中,我允許用戶編輯一些單元格,編輯完這些單元格後,我想將更改提交到數據庫(輸入)。我遇到麻煩在網上找資源來實現這一目標。編輯單元格事件獲取單元格值和位置

我用一個事件:

CellEditEnding但該事件只是爲我提供了行和改變細胞的膠原如何。我如何使用這些來發現細胞本身並獲得價值?

回答

3

您可以使用此功能在此link

public static DataGridCell GetCell(this DataGrid grid, DataGridRow row, int column) 
{ 
    if (row != null) 
    { 
     DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(row); 

     if (presenter == null) 
     { 
      grid.ScrollIntoView(row, grid.Columns[column]); 
      presenter = GetVisualChild<DataGridCellsPresenter>(row); 
     } 

     DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(column); 
     return cell; 
    } 
    return null; 
} 

發現,從事件處理函數調用它:

object cellvalue = DataGridCell(yourgrid, e.Row, e.Column.DisplayIndex).GetValue; 

這個功能也被稱爲GetCell()函數內

public static T GetVisualChild<T>(Visual parent) where T : Visual 
     { 
      T child = default(T); 
      int numVisuals = VisualTreeHelper.GetChildrenCount(parent); 
      for (int i = 0; i < numVisuals; i++) 
      { 
       Visual v = (Visual)VisualTreeHelper.GetChild(parent, i); 
       child = v as T; 
       if (child == null) 
       { 
        child = GetVisualChild<T>(v); 
       } 
       if (child != null) 
       { 
        break; 
       } 
      } 
      return child; 
     } 
+0

錯誤非通用方法'System.Windows.FrameworkElement.GetVisualChild(int)'不能與類型參數一起使用 – user781439

+0

我編輯了我的答案 – AbZy

+0

,不要忘記使用System.Windows.Controls.Primitives包含這個命名空間' – AbZy