我在.net中有一个数据表。我需要翻转其中两个的位置。例如,select语句具有优先级顺序的数据表。用户希望通过选择它并单击增加优先级来提高单行的优先级,如何向上移动一行(AKA翻转两行)
提前致谢
答案 0 :(得分:1)
在此表上使用DataView
,按“优先级”列排序。如果要增加优先级,请增加此列,并在上面的行中减小它。 DataView
将反映用户界面的变化。
Private _view As DataView
...
_view = New DataView(theTable, "", "priority", DataViewRowState.CurrentRows)
dataGridView1.DataSource = _view
...
' Increase priority of row at index i
If i > 0 Then
Dim row = _view(i)
Dim previousRow = _view(i - 1)
row("priority") = row("priority") + 1
previousRow("priority") = previousRow("priority") - 1
End
...
' Decrease priority of row at index i
If i < _view.Count - 1 Then
Dim row = _view(i)
Dim nextRow = _view(i + 1)
row("priority") = row("priority") - 1
nextRow ("priority") = nextRow ("priority") + 1
End
更改优先级后,使用DataAdapter
更新数据库答案 1 :(得分:0)
您可以通过以下方式执行此操作:
更新数据库中两行的优先级,然后重新填充网格(假设您有一个显示数据表的网格)。 (最简单,最昂贵)
或者您可以更新数据库中的优先级,并以编程方式更新两行的行indeces。 (有点难,最便宜)