gpt4 book ai didi

javascript - Dojo Enhanced Grid 嵌套排序无法排序

转载 作者:行者123 更新时间:2023-11-30 13:05:57 27 4
gpt4 key购买 nike

我正在使用带有分页和嵌套排序插件的 Dojo 增强型网格。在网格中,当我单击列标题上的向下箭头时,元素未正确排序。假设如果我有:哈尔阿马尔内存1内存体21个2

所以当我对它们进行排序时,它们变成了:1个2个内存1内存体2阿马尔哈尔

我希望顺序为:1 2 amar Memid1 Memid2 xhar这是为什么?可以做些什么来避免这种情况?

最佳答案

正如 Lucian 所说,您可以编写自己的排序方法。正如您在 documentation 中看到的那样,您可以通过添加 NestedSorting 插件启用自定义排序。您可以通过添加以下内容来执行此操作:

dojo.require("dojox.grid.enhanced.plugins.NestedSorting");

然后您只需要在网格对象上设置属性 nestedSorting: true

排序本身不依赖于网格,而是依赖于store。您可以在 documentation 中阅读有关自定义排序的更多信息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 下对其进行了测试。可以看到结果here .

关于javascript - Dojo Enhanced Grid 嵌套排序无法排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15704833/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com