2009-02-08 152 views
1

允許用戶定義表格順序的最佳方法?允許用戶定義表格順序的最佳方法是什麼?

我們正在使用SQL Server 2005和DevExpress控件。

我們有一個包含以下內容的表:

  1. 進程A
  2. 進程B
  3. 工藝C
  4. 報告A
  5. 申報書B
  6. 報告Ç

我們希望允許用戶將訂單更改爲任何他們想要的。

這裏是一個例子:

  1. 方法C
  2. 方法A
  3. 方法B
  4. 報告乙
  5. 報告A
  6. 報告Ç

爲了適應這個 我們將DisplayOrder(INT)字段添加到由我們的應用程序維護的表中。

使用INT字段是用戶定義訂單的最佳解決方案嗎?

有沒有其他的方法來完成這個?

我想問的原因是,在我們目前的應用程序中,需要大約1秒鐘的時間來移動一行(或多個)。我即將破解代碼,以瞭解爲什麼它需要這麼長時間,如果您的Stack Overflow專家有任何好的想法,我可能會在當時實施它們。

如果你很好奇,這裏是我相信我們的應用程序允許DisplayOrder編輯:

  1. 裝載表到一個GridView
  2. 選擇行
  3. 點擊一個下移按鈕(有也是一個Move Up按鈕)
  4. Click事件會將當前行的DisplayOrder與它下面的行交換。
  5. 的變化,兩者的記錄,寫回數據庫
  6. 這需要每次點擊約1秒(即10次點擊等於10秒)
+1

我期待做類似的事情(向上或向下移動一排)。你有沒有可以發佈的示例代碼? – Sesame 2009-11-05 15:14:59

回答

1

難道是採取每交換1秒因爲您每次點擊更新數據庫?甚至可能再次重新選擇數據?

爲什麼不選擇數據到本地對象。綁定到網格中的這些對象。當您上下移動對象時,請調整其顯示順序屬性。然後只對DB進行更新

  1. 當用戶最終點擊保存。
  2. 如果對象的任何值已更改。
1

因爲用戶可能會改變他們的想法,並且正如彼得莫里斯所暗示的那樣,我會將保存決定移到一個明確的保存按鈕,以便重新排序。

要考慮的其他事項 - 顯式移動到頂部和移動到底部項目。

我在企業系統中使用這種方法實現了一個非常成功的用戶界面,用於用戶選擇可搜索項目和報告項目。用戶界面的更多細節是available for you to see(善良,請記住它是大約15歲 - 回到平淡單日!)。許多用戶測試的一個重要改進 - 保存此訂單的甜蜜點不是每個用戶或每個公司,而是每個組。團隊是一起工作的人,他們有一個相同的起始頁面(本質上是大量連接的圖中的同一個根)。我們在該組織中有大約7個獨特的團體。因此,如果您要爲每個用戶或每個組採用一種方法,則需要將排序數據拉出到將數據鍵映射到序數整數的單獨表中。

0

如果您所在的區域正在討論用戶想要設置和保留的顯示順序,該顯示順序需要與用戶標識和他或她想要查看的記錄的ID以及顯示順序欄位於單獨的表格中。然後,獲取數據到該頁面的查詢將使用加入用戶偏好表。

如果您只是想在人們看屏幕時臨時設置順序,請通過用戶界面進行操作。

無論如何不要對基表中的記錄進行重新排序,這是一個糟糕的選擇,因爲您會遇到競爭條件,其中用戶a想要一個設置,而用戶b正在嘗試更改爲不同的設置。

相關問題