如何为koGrid实现自定义排序?

时间:2015-06-12 04:48:41

标签: javascript sorting knockout.js typescript kogrid

数据:

16.00小时 19.99小时 210.46小时 262.54小时 303.19小时 55.95小时 60.07小时 64.07小时 7.95小时

我想要的是什么:

我需要允许在koGrid中对这个数据王进行排序(通过单击网格标题,asc或desc排序来实现默认功能)。

问题:

数据是字符串,因此您可能会猜测它是如何排序的 - 通过字符代码。 我有什么选择?我发现一个列可以分配sortFn,我猜是这样的吗?

enter image description here

代码:

<span id="qwerty123"><li><a href="#"><i class='fa fa-link'></i> <span>Another Link</span></a></li></span>

小提琴: JSFiddle

1 个答案:

答案 0 :(得分:2)

试着像这样修改你的代码

查看:

<div data-bind="koGrid: gridOptions"></div>

<强>视图模型:

vm = function () {
    var self = this;
    self.myData = ko.observable([{
        hours: '113.02 hours'
    }, {
        hours: '13.01 hours'
    }, {
        hours: '303.01 hours'
    }, {
        hours: '33.01 hours'
    }]);

    self.gridOptions = {
        data: self.myData,
        columnDefs: [{
            field: 'hours',
            displayName: 'hours',
            sortFn(a, b) {
                if (!(a && b)) {
                    return -1;
                }
                var a1 = parseFloat(a.split(' ')[0]);
                var b1 = parseFloat(b.split(' ')[0]);
                if (a1 > b1) return 1;
                if (a1 < b1) return -1;
                if (a1 = b1) return 0;
            }
        }]
    };
};
ko.applyBindings(new vm);

工作小提琴 here

参考文档 here