我正在尝试检查我的三列数据网格中是否选中了我的DataGridCheckBoxColumn,但是当我去检查索引2(第3列)时,我收到错误
System.IndexOutOfRangeException:'找不到第2列。'
我的代码的作用是我从MYSQL语句中选择两列,然后使用方法添加第三列
我不喜欢XAML中的Databind,我更喜欢在WPF中完成所有的Itemssource东西
在加载时我调用两个方法,一个读取两列,一个来自MYSQL数据库的任务和ID,另一个:
private void AddCompleteCheckboxs()
{
DataGridCheckBoxColumn checkColumn = new DataGridCheckBoxColumn();
checkColumn.Header = "Completed";
checkColumn.IsReadOnly = false;
dgTasks.Columns.Add(checkColumn);
}
添加第三列(索引2)。
我有一个调用我的CompleteTasks()方法的按钮,我的代码在索引2处失败:
private void CompleteTasks()
{
foreach (System.Data.DataRowView row in dgTasks.Items)
{
if (Convert.ToBoolean(row[2])) //Fails here :(
{
MessageBox.Show("checked");
}
else
{
MessageBox.Show("unchecked");
}
}
}
我的数据网格显示了所有三列但由于某种原因无法找到索引2,如下所示:
这是我的Datagrid的XAML:
<DataGrid x:Name="dgTasks" Grid.Row="1" Grid.ColumnSpan="2" Margin="5,0" GridLinesVisibility="None" FontFamily="Microsoft Sans Serif" CanUserAddRows="False" AutoGenerateColumns="True" RowHeaderWidth="0">
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="BorderThickness" Value="0"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
</DataGrid>
我知道您可以在XAML中绑定DataGridCheckBoxColumns,但出于分发原因,我只使用XAML创建我的屏幕,不绑定任何数据,并在WPF中完成所有屏幕填充。
我知道这对于这么简单的任务来说有很多垃圾,但如果有人能提供帮助,那将非常感激:)
编辑当我检查行索引0或1时它确实有效,只是索引2失败