2010-03-02 72 views
0

我正在開發一個Web應用程序,該應用程序顯示用戶的產品列表(如10項)。用戶可以選擇按價格,品牌等對結果進行排序。數據從數據庫中加載並且非常小。我如何按照屬性來排序結果,這是恆定的。啓發我實施客戶端分類dojo工具包是否提供用於根據用戶輸入對小列表進行排序的任何內容。加載後在頁面上實現客戶端排序

爲什麼我相信與客戶端排序的原因是:

  • 結果集是小,高達10項,並可以顯示在一個單一的頁面。其次,該項目的所有屬性(用於排序)在客戶端可用,並且不需要數據庫命中。

如果我錯了,請糾正我;另外,請讓我知道這種方法是否存在問題/我錯過了什麼重要的事情?

尋找有價值的評論。

在此先感謝。

編輯:準確地說,我正在設計一個願望清單,它只有選定的項目。用戶可以選擇按價格(低到高或反之亦然),品牌名稱(A-Z或Z-A)進行分類。 我將顯示整行,並且我需要根據組合框選擇對行的所有屬性進行排序。我可以使用dojo AJAX或簡單的JavaScript來完成這個任務嗎?

回答

1

您可能想爲此使用AJAX,因爲如果用戶按不同的列進行排序,例如,價格,她會想要他們所有人中最便宜的產品,而不僅僅是你展示的那個。我不知道什麼道場有做阿賈克斯,但在原型,這是很容易:

http://prototypejs.org/learn/introduction-to-ajax

如果你真的只希望當前正在顯示的項目進行排序,請使用Array.sort:

https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/sort

假設您的項目在表中顯示爲行。使用原型,您可以在陣列中收集這些像這樣:

var items = $$('tr.item'); 

然後,你會用排序方法對items數組進行排序:

items.sort(function (i1, i2) { 
    return price(i1) - price(i2); 
}) 

然後,替換表的內容:

var t = $$('table.items'); 
t.update(); 
items.each(function (i) { t.appendChild(i); }); 
+0

非常感謝您的回覆。雖然我在理解你的代碼時遇到了最初的困難,但我想到了:)。如果這是基於該產品對象的許多屬性而不是單獨的價格? – chong 2010-03-02 11:34:18

+0

用您想要排序的任何東西替換價格。你甚至可以爲你的表排序函數創建一個參數,例如函數sort_items(by){... items.sort(function(i1,i2){return by(i1) - by(i2);}); ...}。 PS:如果這回答了您的問題,您是否將其標記爲接受的答案?謝謝 :) – allyourcode 2010-03-03 03:39:15