Dojo增强网格嵌套排序无法排序
Dojo Enhanced Grid nested sorting not able to sort
我使用带有分页和嵌套排序插件的Dojo增强网格。在网格中,当我单击列标题上的向下箭头时,元素没有正确排序。假设我有:xhar阿玛Memid1Memid212
所以当我对它们排序时,它们变成:12Memid1Memid2阿玛xhar
我想要的顺序是:1 2 amar Memid1 Memid2 xhar为什么呢?怎样才能避免这种情况呢?
正如Lucian所说,您可以编写自己的排序方法。正如您在文档中所读到的,您可以通过添加NestedSorting
插件来启用自定义排序。您可以添加以下内容:
dojo.require("dojox.grid.enhanced.plugins.NestedSorting");
,然后你只需要在你的网格对象上设置属性nestedSorting: true
。
排序本身不依赖于网格,而是依赖于存储。您可以在ItemFileReadStore
的文档中阅读更多关于自定义排序的信息。你要做的是像这样:
grid.store.comparatorMap = new Object();
grid.store.comparatorMap["col1"] = function(a, b) {
if (a.toLowerCase() < b.toLowerCase()) {
return -1;
} else if (a.toLowerCase() == b.toLowerCase()) {
return 0;
} else {
return 1;
}
};
正如您所看到的,我修改了col1
的比较器映射,您需要将其修改为所需的列。该函数本身是纯JavaScript,其工作方式与许多语言中的比较类似。如果排序时字符串a应该在字符串b之前,返回一个负数(-1),当两个字符串相等时需要返回0,如果字符串b应该在字符串a之前,它应该是1。要启用大小写不敏感,您需要比较两个字符串的小写变体。
我用新添加的内容更新了我以前的JSFiddle(上一个问题),并在Dojo 1.6下测试了它。结果如下:
创建一个只有小写值的列,并使用该列进行排序,但不要在网格中显示该列。保持这一栏隐藏。
另一种可能性是编写自己的排序方法并将其连接到您的网格。
相关文章:
- 如何对两个嵌套对象进行排序
- MongoDB按嵌套对象值排序
- 当draggable使嵌套可排序时调用Drop
- 对嵌套的JSON数组进行排序
- 无法读取属性“”;匹配“;(嵌套排序)
- 使用ramda.js中的嵌套字段进行排序
- JavaScript - 按嵌套值对 JSON 对象进行排序
- 如何在javascript中对嵌套对象的数组进行排序
- Javascript 递归地排序对象和嵌套对象以及数组
- 使用 Javascript 和/或 Underscore.js 对嵌套对象进行排序
- 使用 AngularJS 对包含@attributes的嵌套 JSON 数据进行排序
- 如何使用布局管理器重新排序/排序嵌套视图而不重新渲染
- 排序嵌套在对象中的数组,该对象嵌套在另一个对象中
- 为包含0个元素的uls排序嵌套列表
- jQuery插件选项排序/嵌套的最佳实践是什么?
- jQuery可拖动/排序嵌套列表
- 使用NodeJS通过属性排序嵌套JSON
- 如何排序嵌套Javascript数组
- 用动态键排序嵌套的对象数组
- 可排序嵌套的ul如何保存到数据库