2009-08-27 51 views
0

我有與類別列表的GridView控件。在數據庫(MSSQL2008)中,類別表具有SortOrder(INT)NULL字段。更改項目排序順序在GridView控件 - LINQToSQL

目前類別使用檢索:

Galleries.DataSource = From G In DB.GalleryCategories Order By G.SortOrder, G.Name 

現在,我需要能夠做的就是添加「上移」和「下移」按鈕,每行允許用戶對項目進行排序以任意的方式。

我的初始想法是沿着線: 標識所選項目的ID。 識別選定項目之前/之後項目的ID。 交換在DB SortOrders標識項目。

我將不得不做出排序順序NOT NULL,並確保它初始化爲一個唯一的編號

我會很感激這種方法的任何其他建議/意見

非常感謝

回答

2

我有一般看到它這樣做的方式,我已經這麼做了自己

  • SortOrder的是一個int
  • 度10(因此,10,20,30,40)或合適的增量
  • 每個項目的增加要移動一個項目時,減去15
  • 要向下移動一個項目,添加15
  • 要插入的項,取目標和加/減1
  • 應用(Apply)重置值以等間隔
    • 10,20一個NormalizeSort()例程,,30,40 => 10,20,, 40,50

這使得一切都非常簡單,因爲將上述別的東西就是:

list.Add(New Item(..., target.SortOrder +1)) 
list.NormalizeSort() 

// or 
item.SortOrder += 11, etc 

如果你想成爲一個小數,那麼你可以讓這一切順序,只是添加.1等排序順序並重新歸一化。

//安德魯

+0

我結束了初始化排序字段等於主鍵,只是交換與記錄的排序順序之前/之後,但我喜歡事後規範化的想法 - 所以現在,一旦排序完成,我重新設置排序字段爲順序。 千恩萬謝 – Basic 2009-09-05 01:50:32

0

我相信 Galleries.AllowSorting = TRUE; 將是遠遠不夠;)

+0

不幸的是,在這種情況下,我想,這樣的變化發生時所有用戶的基本數據進行排序 - 不只是一個瀏覽當前頁面。 – Basic 2009-09-05 01:51:07