【问题标题】:Scanning all rows from DataGrid扫描 DataGrid 中的所有行
【发布时间】:2019-04-15 16:11:15
【问题描述】:

我有一个DataGrid,我正在尝试扫描所有行。

如果我扫描最多 30 行的Datagrid,它可以工作。但是如果有超过 30 行(即rows.Count > 30),它似乎不起作用。它会抛出一个System.NullReferenceException

如何滚动查看超过 30 行的 DataGrid

【问题讨论】:

  • 请定义 scan 并显示您遇到问题的代码。 System.NullReferenceException 也是一个很常见的错误,如果没有代码,我们无法帮助您找到主要问题...
  • 如果你更清楚你的问题,给出一个代码示例,它会很容易帮助你,所以,试着用更多澄清信息编辑你的帖子,干杯。 stackoverflow.com/help/how-to-ask
  • 如果您的意思是迭代数据,那么您最好迭代绑定的数据,而不是尝试使用 ui 来虚拟化您不可见的所有内容。以这种方式获取数据也更容易。
  • 我想将所有复选框列循环到我的数据网格中,以查看是否选中了复选框;但在 30 次循环后系统返回 System.NullReferenceException。下面插入xaml代码和c#代码

标签: c# wpf datagridview


【解决方案1】:

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 的问题。我对所有 datagridcheckbox 或 datagridtextcolum 只使用一个 datagrid 列。最好只使用一个 &lt;datagrid.columns&gt; 还是使用 foreach 元素一个 &lt;datagrid.columns&gt;

【讨论】:

    猜你喜欢
    • 2012-11-15
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 2019-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多