Сетка с DataContext из DataView не будет отображать данные после DataTable.Clear и DataAdapter.Fill - PullRequest
0 голосов
/ 04 ноября 2010

Я заранее извинюсь за длинный пост.У меня есть две DataTables (Cases и Jobs), каждая с DataView, с которой я связываю свой графический интерфейс (представление данных Cases - это DataContext для Grid, а представление данных Jobs - это ItemsSource для ListView и DataContext для TabControl).При первом заполнении таблиц с помощью DataAdapter.Fill данные отображаются правильно для случаев и заданий.Во время второй загрузки данных я вызываю DataTable.Clear, а затем DataAdapter.Fill, но в графическом интерфейсе отображаются только данные о заданиях.Данные о случаях нигде не видны, хотя, шагая вперед, я могу сказать, что в DataTable есть строка с правильными данными.То есть DataTable.Clear и DataAdapter.Fill работают правильно;элемент управления Grid в моем GUI просто не показывает данные.Я скопировал XAML для элемента управления Grid ниже.Может кто-нибудь мне помочь?!Спасибо.

ОБНОВЛЕНИЕ: Если у меня во второй раз будет более одной строки в таблице, данные будут правильно отображаться в текстовых полях!Что, черт возьми, происходит?

<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 Ответ

0 голосов
/ 05 ноября 2010

Где-то должна быть ошибка в коде Microsoft, потому что я исправил ее с помощью кода, показанного ниже.

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

Мне нужно было сделать это только для таблицы вариантов, а не для таблицы заданий, котораяВот почему я ожидаю, что где-то есть ошибка.Таблица заданий всегда работала независимо от того, была ли в таблице одна или несколько строк.

...