代码之家  ›  专栏  ›  技术社区  ›  Shawn

带有DataView的DataContext的网格不会在DataTable.Clear和DataAdapter.Fill之后显示数据

  •  0
  • Shawn  · 技术社区  · 14 年前

    更新:如果第二次在表中有多行,数据将正确显示在文本框中!到底怎么回事?

    <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>
    
    1 回复  |  直到 14 年前
        1
  •  0
  •   Shawn    14 年前

    微软的代码中一定有一个bug,因为我用下面的代码修复了它。

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

    我只需要为case表而不是jobs表执行此操作,这就是为什么我希望在某个地方会有一个bug。无论表中有一行还是多行,jobs表都始终有效。