加载后在页面上实现客户端排序

时间:2010-03-02 09:55:43

标签: sorting dojo client-side

我正在开发一个网络应用程序,显示用户的产品列表(比如10个项目)。用户可以选择按价格,品牌等对结果进行排序。数据是从数据库加载的,它是非常小的列表。如何根据属性对结果进行排序,这些属性是常量。启发我实施客户端排序 dojo toolkit 是否提供了根据用户输入对小列表进行排序的任何内容。

我确信客户端排序的原因是:

  • 结果集很小,最多10个项目,可以在一个页面中显示。
  • 其次,项目的所有属性(用于排序)在客户端都可用,不需要数据库命中。

如果我错了,请纠正我;另外,如果这种方法有任何问题,请告诉我/我是否遗漏了重要内容?

寻找有价值的评论。

提前致谢。

编辑:确切地说,我正在设计一个愿望清单,它只选择了项目。用户可以选择按价格(从低到高或反之亦然),品牌名称(A-Z或Z-A)进行排序。 我将显示整行,我需要根据组合框选择提供对行的所有属性的排序。我可以使用dojo AJAX或简单的JavaScript来实现这一点吗?

1 个答案:

答案 0 :(得分:1)

您可能希望为此使用AJAX,因为如果用户按其他列排序,例如价格,她会想要最便宜的产品,而不仅仅是你所展示的产品。我不确定Dojo有什么用于做Ajax,但在Prototype中,它很简单:

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

如果您真的只想对当前显示的项目进行排序,请使用Array.sort:

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

假设您的商品在表格中显示为行。使用Prototype,您可以将它们收集到一个数组中:

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

然后,您将使用sort方法对items数组进行排序:

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

然后,替换表中的内容:

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