在数据库中添加的记录未在表单中更新

本文关键字:更新 表单 数据库 添加 记录 | 更新日期: 2023-09-27 18:18:45

我有一个表单打开,然后我去表和更新一个记录。然后返回并刷新表单,但该记录没有更新。

我有一个形式的DataGrid,它被绑定到一个ObservableCollection。在刷新,我添加记录从数据库到这个ObservableCollection使用:

filteredProductList.Clear();
foreach(Formulation frm in dbContext.Formulations)
{
    filterViewedList.Add(frm);
}

PageLoad事件如下:

private void loadData()
{
    try
    {
        filterViewedList= new ObservableCollection<Formulation>(dbContext.Formulations);
        dgRecords1.ItemsSource = filterViewedList;
    }

XAML如下:

<DataGrid Height="387"  x:Name="dgRecords1" Margin="0,0,64,0"  
    IsSynchronizedWithCurrentItem="True"  Style="{DynamicResource StyleDatagrid}"
    ClipboardCopyMode="None" ColumnHeaderStyle="{DynamicResource DataGridColumnHeaderStyle1}"                 
    SelectionChanged="dgRecords1_SelectionChanged" Grid.Column="1" Grid.Row="3">
    <DataGrid.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightBlue"/>
    </DataGrid.Resources>
    <DataGrid.Columns>
        <DataGridTextColumn Width="110" Header="Code" Binding="{Binding FrmltnNo, Mode=TwoWay}" IsReadOnly="True" Foreground="Black"/>
        <DataGridTextColumn Width="415" Header="Description" Binding="{Binding FrmltnName, Mode=TwoWay}" IsReadOnly="True" Foreground="Black"/>
        <DataGridTextColumn Width="*" Header="Status" Binding="{Binding Status, Mode=TwoWay}" IsReadOnly="True" >
            <DataGridTextColumn.CellStyle>
                <Style TargetType="{x:Type DataGridCell}">
                    <Setter Property="Foreground" Value="{Binding Converter={StaticResource FGColorKey}}"/>
                </Style>
            </DataGridTextColumn.CellStyle>
        </DataGridTextColumn>
    </DataGrid.Columns>
</DataGrid>

在数据库中添加的记录未在表单中更新

显示调用"refresh"的代码。dgRecords1。ItemsSource = filterViewedList将会是一个静态拷贝。我怀疑UI没有意识到更新。将filteredProductList作为公共ObservableCollection filteredProductList并绑定到filteredProductList,然后UI将通过ObservableCollection的魔力意识到更新。而且,只更新其中一个比重新填充整个列表更简洁。