0

我会提前为一篇长文道歉。我有两个数据表(案例和作业),每个都有一个数据视图,我将我的 GUI 绑定到(案例数据视图是网格的 DataContext,而作业数据视图是 ListView 的 ItemsSource 和 TabControl 的 DataContext)。我第一次使用 DataAdapter.Fill 填充表格时,数据会正确显示案例和作业。第二次加载数据时,我调用 DataTable.Clear,然后调用 DataAdapter.Fill,但 GUI 中只显示作业数据。案例数据无处可见,即使单步执行我也可以看出 DataTable 中有一行包含正确的数据。也就是说,DataTable.Clear 和 DataAdapter.Fill 工作正常;我的 GUI 中的 Grid 控件不显示数据。我已经为下面的 Grid 控件复制了 XAML。谁能帮我?!谢谢。

更新:如果我第二次在表格中有不止一行,数据会正确显示在文本框中!这到底是怎么回事?

<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>
4

1 回答 1

0

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

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

我只需要为案例表而不是作业表执行此操作,这就是为什么我希望某处存在错误的原因。无论表中有一行还是多行,jobs 表始终有效。

于 2010-11-05T16:45:56.927 回答