Mvvm 剑道网格十进制列排序

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列进行升序或降序排序。在该列中有类似于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.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中实现你的解决方案吗?