【发布时间】:2012-10-22 18:03:06
【问题描述】:
我正在做一个项目,我们使用 KENDOUI 作为前端,使用 jQuery/Javascript 编码来管理我们无法用框架本身做的任何事情。
我有一个需要客户端排序的 KENDO Grid,这就是我想要做的 -
var tPositiondata = _DetailsGridDS.data();
// sort position datasource in order to bind treeview
tPositiondata = tPositiondata.toJSON().sort(function (a, b) {
{
if ((a.DisplayText.localeCompare(b.DisplayText)) < 0) { return -1; }
else if ((a.DisplayText.localeCompare(b.DisplayText)) > 0) { return 1; }
}
});
//re-initialize the grid with new datasource
$("#DivDetailsTable").empty();
$("#DivDetailsTable").kendoGrid({
autobind: false,
scrollable: true,
height: 333,
pageSize: 10,
dataSource: tPositiondata,
dataBound: OnReceivedDataFromDatasource,
columns: [
{
field: "UniqueValue",
title: _ColumnHeaderUniqueValue
},
{
//field: "DisplayTextTranslation",
title: _ColumnHeaderDisplayText,
template: '#= GetTranslation(Id) #'
},
{
field: "CodeAttribute",
title: _ColumnHeaderCodeAttribute
},
{ command: [{ text: _ButtonEdit, className: "k-button k-button-icontext buttonEdit k-grid-Edit" }, { text: _ButtonDelete, className: "k-button k-button-icontext buttonDelete k-grid-Delete" }, { text: " ", className: "buttonUp", width: 15 }, { text: " ", className: "buttonDown", width: 15}], text: "", title: " ", width: 230 }
],
editable: "inline"
});
现在的问题是,变量“tPositionData”不能重新分配给“_DetailsGridDS”,因为它们显然不是相同的类型或格式。因此,我的全局变量“_DetailsGridDS”没有更新的排序数据。如果我在代码中的其他地方引用它,那么我没有排序数据。
有人可以帮我在排序后“撤消”/“反转” .toJSON 调用,以便我可以将其重新分配给 _DetailsGridDS 或者有人可以建议一种解决方法,以便我的全局变量始终更新为最新排序的数据?
【问题讨论】:
-
为什么
toJSON()在该代码中?tPositiondata.toJSON().sort()没有意义,你不能对字符串进行排序。先排序,然后使用toJSON():tPositiondata.sort(/*your sort function here*/).toJSON()。另请注意,如果两项相等,您的排序函数应返回 0。 -
TiesonT. - 不,它不起作用,我得到一个空值:| @nnnnnn:我在收到错误消息之前尝试过,说 [object Object] 没有名为“sort”的方法
标签: javascript javascript-framework kendo-ui gridview-sorting