【问题标题】:Changing DGV checkboxes states according to DataTable根据 DataTable 更改 DGV 复选框状态
【发布时间】:2023-03-18 01:48:01
【问题描述】:

我有一个DataGridView 有两列(其中一个是CheckBox 类型)和一个DataSet 有一个DataTable 构造一个查询结果(只有一列)。但是,我想检查名称在DataTable 上的所有复选框:

name_col
--------
  A001
  A002
  A003

根据DataTable 内容,我在DataGridView 中最终想要的复选框状态:

checkbox_col | name_col
-----------------------
    X        |  A001   
    X        |  A002
    X        |  A003
             |  A004
             |  A005

但是,当我比较 dgv.DataSource 项目值和 DataTable 值时,我得到了 MissingMemberException。根据DataTable 的内容,我有这个代码来检查这些框。我想知道我的错误是什么以及如何修改它。提前致谢(PD:ds 是包含DataTableDataSet):

    If ds.Tables(0).Rows.Count() > 0 Then
        For Each fon As DataRow In ds.Tables(0).Rows
            For Each i As DataGridViewRow In Dgv.Rows
                If fon.Item(0) = Dgv.DataSource.Columns(0).Items.ToString() Then
                    i.Cells("col_check").Value = True
                End If
            Next
        Next
    End If

【问题讨论】:

    标签: .net vb.net datagridview datatable dataset


    【解决方案1】:

    我认为您有一个已填充的 DataGridView,并且您正在将它与来自不同来源的 DataTable 进行比较。您循环遍历 DataTable 和网格的方法是正确的。将 DataTable 值与

    进行比较
    Dgv.DataSource.Columns(0).Items.ToString()
    

    没有意义。您将返回到具有 DataSource 属性的原始 DataTable,然后是 Column 0,然后是 Items 集合,但 Column 没有 Items 集合。

    查看您的 DataGridView,您想要比较的列似乎是 Cells(1) 而不是 Cells(0)。

        If ds.Tables(0).Rows.Count() > 0 Then
            For Each fon As DataRow In ds.Tables(0).Rows
                For Each row As DataGridViewRow In Dgv.Rows
                    If fon(0).ToString = row.Cells(1).ToString() Then
                        row.Cells("col_check").Value = True
                    End If
                Next
            Next
        End If
    

    我没有带复选框的网格,所以我无法测试代码。

    【讨论】:

    • 非常感谢,我不得不更改代码中的其他内容,现在可以按预期工作。
    【解决方案2】:

    好吧,我必须按照@Mary 的建议进行更改并稍微调整使用的列:

                    If fon(0).ToString = i.Cells(2).Value.ToString Then
                        i.Cells(0).Value = True
                    End If
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-06
      • 2019-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多