2011-01-14 76 views
0

我在.net中有一個數據表。我需要翻轉其中兩個的位置。例如,select語句具有按優先級順序排列的數據表。用戶想要一個單行的優先選擇它,然後單擊增加優先級,我怎麼移動行了(又名翻轉兩行)提前翻轉數據表的兩行

感謝

回答

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

0

您可以通過這樣做:

更新數據庫中兩行的優先級,然後重新填充網格(我假設你有一個顯示數據表的網格)。 (最簡單,最昂貴)

或者您可以更新數據庫中的優先級,並以編程方式更新兩行的行數。 (有點難度,最便宜)

+0

數據庫的問題是,我不希望更新數據庫中,直到用戶點擊OK – dko 2011-01-14 16:52:15

+0

是電網約束?如果沒有,那麼你可以更新行數來移動它們,只需在準備好時更新數據庫即可。 – Alex7575 2011-01-14 16:57:34