C# 在System.Data.DataRowView中找不到列2
我试图检查我的DataGridCheckBoxColumn是否在我的三列datagrid中被选中,但是当我在索引2(第三列)处进行检查时,我得到了错误 System.IndexOutOfRangeException:“找不到第2列。” 代码的要点是从MYSQL语句中选择两列,然后使用方法添加第三列 我不喜欢在XAML中进行数据绑定,我更喜欢在WPF中完成我所有的Itemssource工作C# 在System.Data.DataRowView中找不到列2,c#,mysql,wpf,xaml,datagrid,C#,Mysql,Wpf,Xaml,Datagrid,我试图检查我的DataGridCheckBoxColumn是否在我的三列datagrid中被选中,但是当我在索引2(第三列)处进行检查时,我得到了错误 System.IndexOutOfRangeException:“找不到第2列。” 代码的要点是从MYSQL语句中选择两列,然后使用方法添加第三列 我不喜欢在XAML中进行数据绑定,我更喜欢在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");
}
}
}
My datagrid显示所有三列,但由于某种原因无法找到索引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失败正如您所说,
行[0]
和行[1]
的数据来自您的数据库。行[2]
数据来自哪里?您从实际代码中漏掉了很多信息。请参见。@jstreet行[2]来自DataGridCheckBoxColumn,如我的addCompleteTechEckBoxS()方法所示(来自我在线阅读的创建布尔字段的内容),您应该使用该特定列的数据初始化视图模型。例如,对于数据中的所有行,您可以在开始时使用row[2]=false
。@jstreet非常感谢,我将尝试一下@杰斯特雷特的工作非常有魅力,你太棒了,先生!:)