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

Sorting 加载后在页面上实现客户端排序,sorting,dojo,client-side,Sorting,Dojo,Client Side,我正在开发一个web应用程序,为用户显示产品列表(比如10个项目)。用户可以选择按价格、品牌等对结果进行排序。数据是从数据库加载的,它是一个非常小的列表。如何按属性对结果进行排序,属性是常量。告诉我如何实施客户端排序。DojoToolkit是否提供了基于用户输入对小列表进行排序的功能 我相信客户端排序的原因是: 结果集很小,最多10个项目,可以在一个页面中显示 其次,项目的所有属性(用于排序)在客户端都可用,不需要数据库命中 如果我错了,请纠正我;此外,请让我知道此方法是否存在任何问题/我是

我正在开发一个web应用程序,为用户显示产品列表(比如10个项目)。用户可以选择按价格、品牌等对结果进行排序。数据是从数据库加载的,它是一个非常小的列表。如何按属性对结果进行排序,属性是常量。告诉我如何实施客户端排序。DojoToolkit是否提供了基于用户输入对小列表进行排序的功能

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

  • 结果集很小,最多10个项目,可以在一个页面中显示
  • 其次,项目的所有属性(用于排序)在客户端都可用,不需要数据库命中
如果我错了,请纠正我;此外,请让我知道此方法是否存在任何问题/我是否遗漏了任何重要内容

寻找有价值的评论

提前谢谢

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

您可能需要使用AJAX来实现这一点,因为如果用户按不同的列进行排序,例如按价格排序,她会想要所有列中最便宜的产品,而不仅仅是您正在展示的产品。我不确定Dojo在Ajax方面有什么优势,但在Prototype中,它非常简单:

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

假设项目在表中显示为行。使用Prototype,您可以将这些数据收集到一个数组中,如下所示:

var items = $$('tr.item');
然后,您将使用排序方法对
数组进行排序:

items.sort(function (i1, i2) {
  return price(i1) - price(i2);
})
然后,替换表中的内容:

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

非常感谢您的回复。虽然我最初在理解您的代码时有困难,但我发现了:)。如果这是基于该产品对象的多个属性,而不是仅基于价格,请将价格替换为您想要排序的任何内容。您甚至可以将该参数作为表排序函数的一个参数,例如函数sort_items(by){…items.sort(函数(i1,i2){返回方式(i1)-by(i2);});…}。附言:如果这回答了你的问题,你介意将其标记为已接受的答案吗?谢谢:)