datagridview遍历所有列的值

时间:2015-08-04 01:01:33

标签: vb.net

我有一个如下所示的datagridview。我循环遍历每个列并检查值是否为真。如果Grade Column = A,则将Name和Grade值放入1 datagridview,如果Grade Column = F,则将其放入另一个datagridview。但是,如果在datagridview中填充了多行,则会产生错误数据。有没有办法可以确保在使用下面的函数(例如rowselected)时显示一行,或者以某种方式循环遍历列,然后相应地每行。在我的实际表中,有超过100列我正在搜索A和F,所以我不能只为每个特定单元格使用循环。

  

Personid,Name,Grade,99Grade,20Grade
      1,鲍勃,A,A,F
      2,Sam,F,F,A
      3,Kristen,A,A,F

For Each column As DataColumn In dt.Columns

        If dt.Rows(0).Item(column) = myFirstValue Then

            If dt.Rows.Count > 0 Then
                For i As Integer = 0 To dt.Rows.Count - 1
                    Form2.DataGridView1.Rows.Add(column.ColumnName, dt.Rows(i)(1))
                Next
            End If
        End If

        If dt.Rows(0).Item(column) = mySecondValue Then
            If dt.Rows.Count > 0 Then
                For i As Integer = 0 To dt.Rows.Count - 1
                    Form2.DataGridView2.Rows.Add(column.ColumnName, dt.Rows(i)(1))
                Next
            End If
        End If

    Next column

1 个答案:

答案 0 :(得分:-1)

好的,我想出了如何选择一行而不是所有行。万一其他人想要它。

For Each column As DataColumn In dt.Columns

If dt.Rows(0).Item(column) = myFirstValue Then

If dt.Rows.Count > 0 Then or Each lRow As DataGridViewRow In  DataGridView1.SelectedRows                  
Form2.DataGridView1.Rows.Add(column.ColumnName, lRow.Cells(0).Value))
            Next
        End If
    End If

    If dt.Rows(0).Item(column) = mySecondValue Then
        If dt.Rows.Count > 0 Then
For Each lRow As DataGridViewRow In  DataGridView1.SelectedRows
Form2.DataGridView2.Rows.Add(column.ColumnName,  lRow.Cells(0).Value)
            Next
        End If
    End If

Next column