0

我有界的 DataGrid,其中我有 CheckBoxColumn 作为它的第一个 col 和标题中的 Checkbox。如果选中,则检索该行的数据。代码是:

 <DataGrid AutoGenerateColumns="False" Name="dgvSiSelection" BorderBrush="#FFB7B39D" Background="LightYellow" RowBackground="LightGray" AlternatingRowBackground="#FFFFFFF5" BorderThickness="10" FontSize="13" FontFamily="Segoe UI" CanUserAddRows="False">

    <DataGrid.Columns>
          <DataGridCheckBoxColumn Binding="{Binding BoolProperty, Mode=TwoWay}"/>
          <DataGridTextColumn Header="" Binding="{Binding SiHeader}" MinWidth="108" IsReadOnly="True"/>
          <DataGridTextColumn Header="Number of Chemicals" Binding="{Binding S_NumberOfCases}" />
          <DataGridTextColumn Binding="{Binding S_Value1}" >
                <DataGridTextColumn.Header>
                         <Grid>
                              <Grid.ColumnDefinitions>
                                  <ColumnDefinition/>
                                    <ColumnDefinition/>
                              </Grid.ColumnDefinitions>
                              <TextBlock Grid.Column="1" Text="Value1"/>
                              <CheckBox Name="chkNValue1"  Grid.Column="0" Width="16" IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridColumn}}, Path=DataContext.AllItemsAreChecked}" />
                      </Grid>
        ..................

在上面的网格中,我在第一列和标题上都有复选框以及标题。基于对各个复选框的选择,检索数据。

当我设置 DaraGrid 的 ItemSource 时,项目会正确显示,但未选中 1st col & 的复选框以及列标题。我找不到设置第一行复选框的方法。

另外如何选择 chkNValue1 ?

我如何设置它或如何完成此操作。

代码我导入数据并相应地加载数据网格:

        List<SIData> sd = mw.xlsImpExp.GetStep5SiList();

        dgvSiSelection.ItemsSource = sd;

        // SI Grid - Check the ValueX checkbox on header
        for (int i = 0; i < sd.Count; i++)
        {
            SIData s = sd[i];

            if (s.S_Value1 > 0)
                chkNValue1.IsChecked = true;
            if (s.S_Value2 > 0)
                chkNValue2.IsChecked = true;
            if (s.S_Value3 > 0)
                chkNValue3.IsChecked = true;
            if (s.S_Value4 > 0)
                chkNValue4.IsChecked = true;
            if (s.S_Value5 > 0)
                chkNValue5.IsChecked = true;
        }

为了检查 ValuesX 列的复选框,我管理了上面的代码。但是想知道它们是否可以比循环更简单和容易。

对于 col1 复选框,我根本没有代码。我不知道如何实现它。我主要需要在设置网格的 ItemSource 时进行设置。

任何指导方针,帮助表示赞赏。

谢谢

4

0 回答 0