无法在System.Data.DataRowView

时间:2017-06-30 18:13:56

标签: c# mysql wpf xaml datagrid

我正在尝试检查我的三列数据网格中是否选中了我的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,如下所示: enter image description here

这是我的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 个答案:

没有答案