编辑单元格事件获取单元格值和位置

时间:2013-01-17 21:14:52

标签: c# .net wpf datagrid

在我的Datagrid中,我允许用户编辑一些单元格,在编辑这些单元格后,我想将更改提交到数据库(在输入时)。我在线寻找资源以解决问题。

我使用了一个名为:

的事件

CellEditEnding但事件只为我提供了更改单元格的Row和Col的方式。如何使用这些来查找单元格并获取值?

1 个答案:

答案 0 :(得分:4)

您可以使用此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;
        }