2

我有一个用于在本地添加、修改和删除数据的 DataTable。DataTable 也用于填充网格。

我需要根据整数值(重要性)对网格进行排序。

我想实现两个按钮来增加或减少每条记录的重要性。出于这个原因,我写了这段代码:

 Dim rowNumber As Integer = 0

    For i As Integer = 0 To dataTable.Rows.Count - 1
        'search for the selected row in the DataGridView by ID
        If dataTable.Rows(i)("ID") = ID Then
            rowNumber= i
        End If
    Next

    If rowNumber <> 0 Then
        dataTable.Rows(rowNumber )("Priority") -= 1
        dataTable.Rows(rowNumber - 1)("Priority") += 1
    End If

它第一次运行良好,它更改了选定的记录并对所有其他记录进行了更改以调整顺序。第二次产生错误。

这是因为 DataTable 不会根据新的 Priority Order 自动排序。

我想知道是否有办法在更改记录的原始顺序(字段优先级)后对 DataTable 进行排序

4

1 回答 1

3

尝试为此使用 DataView:

Dim dv As New DataView(dataTable)
dv.Sort = "Priority"

然后使用 dv 作为网格的 DataSource。


根据您的评论,我认为您需要找到具有其他优先级编号的行:

Dim rowNumber As Integer = 0
Dim priorityNumber As Integer = 0

For i As Integer = 0 To dt.Rows.Count - 1
  If dt.Rows(i)("ID") = ID Then
    rowNumber = i
    priorityNumber = dt.Rows(i)("Priority")
    dt.Rows(i)("Priority") -= 1
  End If
Next

For i As Integer = 0 To dt.Rows.Count - 1
  If dt.Rows(i)("ID") <> ID AndAlso dt.Rows(i)("Priority") = priorityNumber Then
    dt.Rows(i)("Priority") += 1
  End If
Next
于 2013-05-09T22:31:43.460 回答