gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 21:43:23 26 4
gpt4 key购买 nike

数据:

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

代码:

this.gridOptions = {
canSelectRows: false,
showColumnMenu: false,
showFilter: false,
columnDefs: [

{ field: 'localizedName', displayName: 'Name' },
{
field: 'localizedDuration', displayName: 'Duration',
sortFn: function (itemA: string, itemB: string) {
var numA = parseFloat(itemA);
var numB = parseFloat(itemB);

if (!numA && !numB)
return 0;
else if (!itemA && (itemA === undefined || itemA === null))
return 1;
else if (!itemB && (itemB === undefined || itemB === null))
return -1;

if (numA > numB)
return -1;
else if (numA < numB)
return 1;

return 0;
}
},
],
data: this.dataRows
};

fiddle : JSFiddle

最佳答案

试着像这样修改你的代码

View :

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

View 模型:

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);

工作 fiddle here

引用文档可用 here

关于javascript - 如何为 koGrid 实现自定义排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30795489/

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