[JQuery] Sortable 拖曳排序結合資料庫 (一)

2016-05-07

設定資料的排序在後台端是很常見的動作,那有什麼比較簡單又迅速可以達成的方法呢?在這裡將使用JQuery UI的Sortable結合資料庫來達成快速排序的成果。

起初是後台的圖片需要排序,然後就在想有什麼好方法可以達成快速排序、容易管理的方法,就思考出了這個實作方式,方法是使用鏈結串列的雙向鏈結來實現,當然沒有鏈結串列麻煩的Class寫法,只是使用相似的概念而已,以下圖來表示。

[JQuery] Sortable 拖曳排序結合資料庫 解說圖

資料鏈結方式 - [ 儲存格式 ]

每一筆資料前後都有2個欄位,一個用來存前一筆資料的ID [ before ],一個用來存下一筆資料的ID [ after ]。

資料的開始與結束都以0開始(或是-1、其他不使用的值),分別存在第一筆資料的before以及最後一筆資料的after,當然想將資料倒序找出時可以將資料搜尋時的頭尾方式對調。

PS:找資料時先找出before為0的資料,再來找該資料的after的id的資料出來,在來就一直找下一筆資料出來直到after為0為止。

資料新增方式 - [ 開始、結束 ]

資料新增在開始的前面與結束的後面是最簡單的方式,在前面時只要將新增的資料的before設為0,after設為原始的第一筆資料,然後第一筆資料的before設定為新增資料的id,這樣就完成了。

新增在結束的後面的方法就反向思考即可。

資料也可以新增在中間(用新增在第幾筆之前或第幾筆之後來實現),實現將資料從頭開始查詢,利用計數器判斷找到第幾筆資料了,然後利用第N筆資料的before和after值來實現即可。

實作成果

2016-05-21 註 -> 拖曳排序使用單一個資料表欄位來實作 [ 連結 ]

分類
標籤