获取数据网格中单元格的前一个值

本文关键字:一个 数据网 数据 网格 单元格 获取 | 更新日期: 2023-09-27 18:04:52

首先为我的英语感到抱歉。我是c#、wpf和这类东西的新手。我使用实体框架,我绑定一个数据网格与ObservableCollection。我需要获取单元格的旧值并将其与新值进行比较。在数据库中,实体具有旧值,因为我没有保存更改。我的问题是,当我尝试执行查找(context.Find(reference.Id);)时,返回查找的元素具有网格的新值。

My XAML has:

<DataGrid x:Name="datagrid" PreviewKeyDown="dataGrid_PreviewKeyDown" AutoGenerateColumns ="False" ItemsSource="{Binding Path=References, ElementName=referenceWindow, Mode=TwoWay}"

我的。cs是这样的:

 ObservableCollection<Reference> References = new  ObservableCollection<Reference> References(context.References);

如何获得旧值?

谢谢

获取数据网格中单元格的前一个值

如何在文件夹属性的setter中触发一个事件,并将旧名称传递给它。或者你可以在setter中调用一个方法做任何你需要发生的事情。我想我的观点是,我相信如果不考虑UI,它会更容易处理。

作为Kik,我会说创建一个方法,当属性或属性被更改时被触发。当我们不知道你在做什么,除了数据绑定时,给出一个例子有点困难。我个人会跳过双向模式,为整个对象创建一个方法。

你可以这样使用RowEditEnding:

<DataGrid x:Name="DataGrid" RowEditEnding="DataGrid_OnRowEditEnding"  AutoGenerateColumns="False" Margin="5">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Name" Binding="{Binding Name, UpdateSourceTrigger=PropertyChanged}"/>
            <DataGridTextColumn Header="Age" Binding="{Binding Age, UpdateSourceTrigger=PropertyChanged}"/>
        </DataGrid.Columns>
    </DataGrid>

然后在代码中像这样:

private void DataGrid_OnRowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
    {
        var datag = (DataGrid) sender;
        var p = (Person) datag.SelectedValue;
        var p1 = (Person) e.Row.Item;
        Debug.WriteLine(p.Name + ", " + p.Age);
        Debug.WriteLine(p1.Name + ", "+ p1.Age);
    }

这样,您将拥有数据库项和新项。你可以比较和做你想做的。

相关文章: