Сканирование всех строк из DataGrid - PullRequest
1 голос
/ 15 апреля 2019

У меня есть DataGrid, и я пытаюсь просканировать все строки.

Если я сканирую Datagrid с максимум 30 строками, это работает.Но если имеется более 30 строк (т. Е. rows.Count > 30), похоже, это не сработает.Выдает System.NullReferenceException.

Как прокрутить DataGrid с более чем 30 строками?

1 Ответ

0 голосов
/ 07 мая 2019

XAML:

<DataGrid Grid.Row="2" Margin="5" CanUserAddRows ="False" CanUserReorderColumns="False" x:Name="DTG_Can" AutoGenerateColumns="False"  CanUserDeleteRows="False" ItemsSource="{Binding}" SelectionMode="Extended">
 <DataGrid.Columns>
  <DataGridCheckBoxColumn>
    <DataGridCheckBoxColumn.HeaderTemplate>
    <DataTemplate>
     <CheckBox Click="CheckUncheckAllCan_Click"/>
    </DataTemplate>
   </DataGridCheckBoxColumn.HeaderTemplate>
  </DataGridCheckBoxColumn>
  <DataGridTextColumn Header="id" Binding="{Binding Path=id}" Visibility="Hidden"  IsReadOnly="True">
   <DataGridTextColumn.HeaderStyle>
    <Style TargetType="DataGridColumnHeader">
     <Setter Property="HorizontalAlignment" Value="Stretch"/>
     <Setter Property="HorizontalContentAlignment" Value="Center"/>
    </Style>
   </DataGridTextColumn.HeaderStyle>
  </DataGridTextColumn>
....

C #

for (int i = 0; i < DTG_Can.Items.Count; i++)
{
 drv = (DataRowView)DTG_Can.Items.GetItemAt(i);
 var item = DTG_Can.Items[i];
 var CBM = DTG_Can.Columns[0].GetCellContent(item) as CheckBox;
 if (CBM.IsChecked == true && flagIns == 0) MessageBox.Show(i.ToString() + " - " + drv[2].ToString().ToUpper());
 else MessageBox.Show(i.ToString() + " - No Check");

У меня есть еще один вопрос к XAML.Я использую только один столбец datagrid для всех datagridcheckbox или datagridtextcolum.Лучше использовать только один <datagrid.columns> или использовать элемент foreach один <datagrid.columns>?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...