Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在System.Data.DataRowView中找不到列2_C#_Mysql_Wpf_Xaml_Datagrid - Fatal编程技术网

C# 在System.Data.DataRowView中找不到列2

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,另一个:

我试图检查我的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非常感谢,我将尝试一下@杰斯特雷特的工作非常有魅力,你太棒了,先生!:)