在dojo dgrid中,我有一列我要整理的花车。我从SitePen的Ken Franqueiro那里找到了关于https://github.com/SitePen/dgrid/issues/276排序的示例指令。
grid.set("sort", function(a,b) {
if(a.col5 > b.col5) { return 1; }
if(a.col5 < b.col5) { return -1 }
return 0;
});
由于我想将它们作为花车进行排序,我做了这个改变。
grid.set("sort", function(a,b) {
var first = parseFloat(a.col5);
var second = parseFloat(b.col5);
if (first > second) { return 1; }
if (first < second) { return -1 }
return 0;
});
但是,它仍然将它们排序为具有此结果的字符串: -0.11 -7.15 0.12 1.25 10.9 2.02
我实际上并不确定它会调用我的功能; dojo并不总是允许类似代码中的断点。因此,我更改了它并创建了一个函数,compareMyFloats(a,b)和比较器代码,并从我的grid.set代码中调用它。在我的功能中,我无法停在断点处。
因此,对列中的浮点数进行排序的正确方法是什么?
答案 0 :(得分:1)
您所描述的totally seems to work for me。
如果您的数据应该被视为数字,我理想情况下建议首先输出数据而不是字符串。
同时,RE“Dojo并不总是允许断点”,我唯一可以想到的是你可能会指的是针对Dojo的缩小版本运行,但所有最新版本的Dojo都支持源映射,仍然允许您在浏览器的开发人员工具中查看未经明确的代码和断点。
我链接的小提琴正好使用了原帖中的内容,但是我要求我提供内联代码以供JSFiddle使用,所以就在这里。
var grid = new OnDemandGrid({
columns: {
id: 'ID',
value: 'Value'
},
collection: new Memory({ data: [
{ id: 1, value: '-0.11' },
{ id: 2, value: '-7.15' },
{ id: 3, value: '0.12' },
{ id: 4, value: '1.25' },
{ id: 5, value: '10.9' },
{ id: 6, value: '2.02' }
] }),
sort: function (a, b) {
var first = parseFloat(a.value);
var second = parseFloat(b.value);
if (first > second) {
return 1;
}
if (first < second) {
return -1;
}
return 0;
}
}, 'grid');