Mvvm 剑道网格十进制列排序
我要对剑道网格列进行排序。在下面的屏幕截图中,我需要对WBS列进行升序或降序排序。在该列中有类似于1.1、1.1.1、1.2.1、1.2.1.1、1.2.1.2、1.3、2、2.1、2.1.1、2.2等的值,基本上,您需要为Mvvm 剑道网格十进制列排序,mvvm,kendo-ui,telerik,kendo-grid,Mvvm,Kendo Ui,Telerik,Kendo Grid,我要对剑道网格列进行排序。在下面的屏幕截图中,我需要对WBS列进行升序或降序排序。在该列中有类似于1.1、1.1.1、1.2.1、1.2.1.1、1.2.1.2、1.3、2、2.1、2.1.1、2.2等的值,基本上,您需要为WBS列定义一个特别的比较函数。这是可以使用的 现在的问题是发明一种能够根据需要比较两个值的函数 我想到要做以下几件事: 在值数组中拆分以“.”分隔的原始值。例如:“10.1.2”变为[“10”、“1”、“2”] 逐个比较数组的值,记住一个可能比另一个短,这意味着更小(即10
WBS
列定义一个特别的比较
函数。这是可以使用的
现在的问题是发明一种能够根据需要比较两个值的函数
我想到要做以下几件事:
“10.1.2”
变为[“10”、“1”、“2”]
10.1
更小10.1.1
)columns : [
...
{
field: "wbs",
width: 150,
title: "WBS",
sortable: {
compare: function (a, b) {
var wbs1 = a.wbs.split(".");
var wbs2 = b.wbs.split(".");
var idx = 0;
while (wbs1.length > idx && wbs2.length > idx) {
if (+wbs1[idx] > +wbs2[idx]) return true;
if (+wbs1[idx] < +wbs2[idx]) return false;
idx++;
}
return (wbs1.length > wbs2.length);
}
}
}
...
]
列:[
...
{
字段:“wbs”,
宽度:150,
标题:“WBS”,
可排序:{
比较:功能(a、b){
var wbs1=a.wbs.拆分(“.”);
var wbs2=b.wbs.拆分(“.”);
var-idx=0;
while(wbs1.length>idx&&wbs2.length>idx){
if(+wbs1[idx]>+wbs2[idx])返回true;
if(+wbs1[idx]<+wbs2[idx])返回false;
idx++;
}
返回值(wbs1.length>wbs2.length);
}
}
}
...
]
注意:正如我之前所说的,由于拆分
,我在数组中得到的是字符串
。因此,我们使用一个小技巧来比较number
的值是非常重要的,它是+
的前置。所以当我做if(+wbs1[idx]>+wbs2[idx])
时,我实际上是在比较wbs1[idx]
和wbs2[idx]
上的值作为数字
你可以在这里看到:你好,欧娜白。谢谢你的回复。但是WBS列没有在JSFIDLE链接中排序。你能检查一下并给我一些建议吗?它在我的浏览器上工作。你点击标题进行排序了吗?它在chrome中工作。但它不支持IE11。我已将剑道UI更新为更新版本(v2014.1.318)。你介意在IE11中试用吗?Onabai,你知道我们如何在Kendo UI for ASP MVC中实现你的解决方案吗?