作为koGrid 2.1.1的一部分,我无法使默认排序工作,这意味着如果希望按照特定的列/方向对网格进行排序,则不会得到预期的行为。koGrid中的默认排序是由sortInfo在第一次配置gridOptions时实现的。
我使用jsFiddle创建了一个示例,演示了这个问题。您可以注意到,即使我指定了sortInfo来进行排序,列表也不会按名称排序。
1.使用排序信息初始化koGrid:
this.gridOptions = {
data: self.myData,
...
sortInfo: ko.observable({
column: { "field": "name" },
"direction": "asc"
})
...
};注意,列表没有排序,箭头也没有显示:

发布于 2013-07-19 19:22:42
如果指定的话,我将koGrid 2.2.1调试js更改为使用sortInfo。基本上,我做了以下两项改变:
1.创建了一个函数,该函数将逐列返回到网格对象:
window.kg.Grid = function (options) {
...
self.columnByField = function (field) {
if(field) {
var column;
$.each(self.columns(), function (i, c) {
if(field == c.field) {
column = c;
return false;
}
});
return column;
}
}
...
}2.更改网格对象init方法以查找sortInfo并对列进行排序:
window.kg.Grid = function (options) {
...
self.init = function () {
...
self.buildColumns();
var sortingProperties = self.sortInfo.peek();
if(sortingProperties) {
var col = self.columnByField(sortingProperties.column.field);
if(col) {
col.sortDirection(sortingProperties.direction === ASC ? DESC : ASC);
col.sort();
}
}
...
}
...
}通过这样做,可以解决默认的排序问题。我已经创建了一个叉GitHub项目,并在那里添加了新的调试js文件。
现在,当您第一次加载网格时,排序工作如下所示:

发布于 2015-07-09 08:44:05
为gridOption sortInfo添加如下函数
....
sortInfo: this.sortDetails;
}定义函数sortDetails如下所示
this.sortDetails.subscribe(function (data) {
this.sortData.sort(function (left, right) {
return left == right ? 0 : (left < right ? -1 : 1);
});
});https://stackoverflow.com/questions/17753953
复制相似问题