2011-12-23 3 views
-1

하나의 양식이 열려 있고 테이블로 이동하여 하나의 레코드를 업데이트합니다. 그런 다음 다시 돌아와 양식을 새로 고치지 만 해당 레코드는 업데이트되지 않습니다.레코드가 데이터베이스에 추가되지 않아 양식에 업데이트되지 않았습니까?

이 양식의 DataGridObservableCollection에 바인딩되어 있습니다. 새로 고침, 나는 사용하여이 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> 
+2

XAML을 표시하고 바인딩 및 바인딩 할 속성을 나타내는 데 도움이됩니다 ... –

+1

dbContext를 어딘가에 업데이트하고 있습니까? 어쩌면 개체에 이전 데이터가 남아있을 수도 있습니다. – Feroc

답변

1

코드를보기 "새로 고침"이라고 부릅니다. dgRecords1.ItemsSource = filterViewedList는 단지 정적 복사본이 될 것입니다. UI가 업데이트를 인식하지 못하는 것 같습니다. filteredProductList를 공개 ObservableCollection FilteredProductList로 노출하고 FilteredProductList에 바인딩하면 UI가 ObservableCollection의 마법을 통해 업데이트를 인식합니다. 전체 목록을 다시 채우는 것보다는 하나만 업데이트하는 것이 더 깔끔합니다.

관련 문제