DataGridView多行选择问题

时间:2013-01-28 14:06:55

标签: vb.net datagridview

我正在尝试使用For ... Next循环检查DataGridView中的多个选择,但即使我选择了多行,唯一具有Selected = True属性的行也是选择中的第一行。有办法解决这个问题吗?

DataSeridView上的MultiSelect为true。

我的代码如下:

For Each dr As DataGridViewRow In dgv.Rows
    If dr.Selected = True Then
        intSelectedRow = dr.Index
        SetTime("KeyEntry", dgv.Name, intSelectedRow)
    End If
Next

由于

2 个答案:

答案 0 :(得分:7)

试试这个:

Dim selectedItems As DataGridViewSelectedRowCollection = dgv.SelectedRows
      For Each selectedItem As DataGridViewRow In selectedItems
            'Add code to handle whatever you want for each row
      Next
End Sub

答案 1 :(得分:-1)

    Dim Message As String = String.Empty
    Dim FNL As FinalRpt = New FinalRpt()

    For Each ItemRow As DataGridViewRow In DGVItems.Rows

        Dim ISSelected As Boolean = Convert.ToBoolean(ItemRow.Cells("MyChkBox").Value)

        If ISSelected Then

            Message &= Environment.NewLine

            Message &= ItemRow.Cells("I_ID").Value.ToString()

            Dim SelectedRow As Integer = DGVItems.Rows.GetRowCount(DataGridViewElementStates.Selected)

            Dim RPTItemsDA As OleDbDataAdapter
            Dim RPTItemsDS As DataSet

            Dim I As Integer

            For I = 0 To SelectedRow Step 1

                RPTItemsDA = New OleDbDataAdapter("Select Distinct * From stkrpt Where I_ID = " & DGVItems.SelectedRows(I).Index.ToString() & "", DBConnect)
                RPTItemsDS = New DataSet

                RPTItemsDA.Fill(RPTItemsDS, "stkrpt")

                FNL.DGVReport.DataSource = RPTItemsDS
                FNL.DGVReport.DataMember = "stkrpt"
            Next

            FNL.MdiParent = MDIParent1

            FNL.StartPosition = FormStartPosition.CenterScreen
            FNL.WindowState = FormWindowState.Maximized


            Me.Hide()
            FNL.Show()

            ISSelected = False

        End If
    Next

    MessageBox.Show(Message)