颠倒行输入数据表的方式

时间:2013-07-10 14:51:46

标签: vb.net datatable

我有一个函数,因此我可以选择数据表的行,并跟踪我选择的行。但是当它返回另一个数据表时,它会进入我向后选择的行。

因此,如果我在返回数据表时选择行1,2,3,则行显示为3,2,1这是函数:

Private Function getCoordinates()
    Dim dt As New DataTable
    Dim dt2 As New DataTable
    Dim r As DataRow
    Dim n As Integer
    Dim selectedItems As DataGridViewSelectedRowCollection = dgv.SelectedRows

    dt = dgv.DataSource
    dgv.SelectionMode = DataGridViewSelectionMode.FullRowSelect
    dgv.MultiSelect = True

    dt2.Columns.Add("Command")
    dt2.Columns.Add("Position")

    Try
        If selectedItems Is Nothing Then
            For n = 0 To dt.Rows.Count - 1
                r("Command") = dt.Rows.Item(n)("Mouse Command")
                r("Position") = dt.Rows.Item(n)("Mouse Position")
                dt2.Rows.Add(r)
            Next

        Else
            For Each selectedItem As DataGridViewRow In selectedItems

                Dim MouseIndex = Convert.ToString(selectedItem.Cells(0).Value)
                Dim CoordIndex = Convert.ToString(selectedItem.Cells(1).Value)
                r = dt2.NewRow()
                r("Command") = MouseIndex
                r("Position") = CoordIndex
                dt2.Rows.Add(r)

            Next
        End If

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

    Return dt2

End Function

Wsa只是想知道我是如何做到的,以便行不会像它那样反转。

2 个答案:

答案 0 :(得分:2)

来自social.msdn.microsoft.com forum

  

第一个选定的DataGridViewRow列在DataGridView的SelectedRows集合的最后一项中。这种行为是设计使然。

您可以循环每个DataGridViewRow并仅在选中时将其复制到DataTable中。

答案 1 :(得分:2)

或者只是向后循环:

For i As Integer = selectedItems.Count - 1 To 0 Step -1
  Dim selectedItem As DataGridViewRow = selectedItems(i)
  '...
Next