2010-11-04 26 views
0

Je m'excuserai à l'avance pour un post long. J'ai deux DataTables (cas et travaux), chacun avec un DataView auquel je lie mon GUI (l'aperçu de données de cas est le DataContext pour une grille, tandis que l'aperçu de données de Jobs est le ItemsSource d'un ListView et le DataContext d'un TabControl). La première fois que je remplis les tables avec DataAdapter.Fill, les données s'affichent correctement pour les cas et les tâches. La deuxième fois que je charge des données, j'appelle DataTable.Clear puis DataAdapter.Fill, mais seules les données des jobs s'affichent dans l'interface graphique. Les données de cas ne sont pas visibles, même si je peux dire qu'il y a une ligne dans le DataTable avec les données correctes. C'est, le DataTable.Clear et DataAdapter.Fill fonctionnent correctement; le contrôle Grid dans mon interface graphique ne montre pas les données. J'ai copié le XAML pour le contrôle de grille ci-dessous. Quelqu'un peut-il m'aider?! Merci. MISE À JOUR: Si j'ai plus d'une ligne dans la table la deuxième fois, les données s'affichent correctement dans les zones de texte! Que diable se passe-t-il?Grille avec DataContext de DataView n'affichera pas de données après DataTable.Clear et DataAdapter.Fill

<Grid Height="165" Width="390" DataContext="{Binding caseTableView}" > 

      <Grid.Resources> 
       <local:CaseStatusItemsSource x:Key="StatusesSource" /> 
      </Grid.Resources> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="10" /> 
       <RowDefinition /> 
       <RowDefinition /> 
       <RowDefinition /> 
       <RowDefinition /> 
       <RowDefinition /> 
       <RowDefinition Height="10" /> 
      </Grid.RowDefinitions>    
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="120" /> 
       <ColumnDefinition Width="120" /> 
       <ColumnDefinition Width="150" /> 
      </Grid.ColumnDefinitions> 

      <!--Case Details--> 
      <Label Style="{StaticResource LabelStyle}" Grid.Row="1" Grid.Column="1" >Case Number:</Label> 
      <TextBox Grid.Row="1" Grid.Column="2" Style="{StaticResource TextBoxStyle}" IsReadOnly="{Binding isROCaseNumber}" LostFocus="caseNumber_LostFocus" > 
       <TextBox.Text> 
        <Binding Path="/CASENUMBER" UpdateSourceTrigger="LostFocus"> 
         <Binding.ValidationRules> 
          <local:CaseNumberValidationRule /> 
         </Binding.ValidationRules> 
        </Binding> 
       </TextBox.Text> 
      </TextBox> 

      <Label Style="{StaticResource LabelStyle}" Grid.Row="2" Grid.Column="1" >Date Received:</Label> 
      <TextBox Grid.Row="2" Grid.Column="2" Style="{StaticResource TextBoxStyle}" Text="{Binding Path=/DATERECEIVED, StringFormat=d}" IsReadOnly="{Binding isRODateReceived}" /> 

      <Label Style="{StaticResource LabelStyle}" Grid.Row="3" Grid.Column="1" >Status:</Label> 
      <ComboBox Grid.Row="3" Grid.Column="2" Width="140" Height="20" HorizontalAlignment="Left" FontFamily="Verdana" FontSize="9" 
        ItemsSource="{Binding statuses, Source={StaticResource StatusesSource}}" SelectedItem="{Binding Path=/STATUS, Mode=TwoWay}" IsReadOnly="{Binding isROCaseStatus}" > 
      </ComboBox> 

      <Label Style="{StaticResource LabelStyle}" Grid.Row="4" Grid.Column="1" >Date Ord. Received:</Label> 
      <TextBox Grid.Row="4" Grid.Column="2" Style="{StaticResource TextBoxStyle}" Text="{Binding Path=/DATEORDRECEIVED, StringFormat=d}" IsReadOnly="{Binding isRODateOrdReceived}" /> 

      <Label Style="{StaticResource LabelStyle}" Grid.Row="5" Grid.Column="1" >Date Posted:</Label> 
      <TextBox Grid.Row="5" Grid.Column="2" Style="{StaticResource TextBoxStyle}" Text="{Binding Path=/DATEPOSTED, StringFormat=d}" IsReadOnly="{Binding isRODatePosted}" /> 

     </Grid> 

Répondre

0

Il doit y avoir un bogue dans le code de Microsoft quelque part, car je l'ai corrigé avec le code ci-dessous.

  ICollectionView _cv = CollectionViewSource.GetDefaultView(_appModel.casesTable); 
      _cv.MoveCurrentToNext(); 

Je ne devais le faire pour la table de cas, pas la table d'emplois, ce qui est la raison pour laquelle je pense qu'il ya un bug quelque part. La table des jobs a toujours fonctionné s'il y avait une ou plusieurs lignes dans la table.