我有一个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不会根据新的优先顺序自动排序。
我想知道在更改记录的原始顺序(字段优先级)后是否有办法对DataTable进行排序
答案 0 :(得分:3)
尝试使用DataView:
Dim dv As New DataView(dataTable)
dv.Sort = "Priority"
然后使用dv作为网格的数据源。
根据您的评论,我认为您需要找到具有其他优先级编号的行:
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