我想将检索到的数据排序到描述字段,但是无法对其进行排序。
UI代码:正确显示数据
var gridDataSource = new kendo.data.DataSource({
autoSync: true,
data: transformation.Activities,
schema: {
model: {
id: "TransformerActivityUID",
fields: {
//It has different field. for instance one is
TargetTable: { editable: false, sortable: true },
}
}
},
sort: { field: "Description", dir: "desc" },
group: { field: "TargetTable" }
});
CreateGrid("functionTable", new BasicGrid(gridDataSource, columns, ActivityChanged));
ChangesDetection(ToggleSave);
AutoResizeModal("95%");
var grid = GetGridData("functionTable");
$("#functionsList").kendoDropTarget({
group: "gridGroup",
drop: AddActivity
});
grid.table.kendoDropTarget({
group: "gridGroup",
drop: AddActivity
});
当我检索数据时,我希望它按描述字段进行排序
functionTableGrid = GetGridData("functionTable");
gridSource = functionTableGrid.dataSource;
gridData = functionTableGrid.dataSource.data();
var dsSort = [];
dsSort.push({ field: "Description", dir: "desc" });
var testData = gridSource.sort(dsSort);
var sortedData= testdata.data();
//I have tried this
gridData.dataSource.sort(dsSort) //not working
gridSource.sort(dsSort); // not working
重要的是,我在此处拥有与UI中显示的数据相同的数据。
我尝试了不同的方法,但不确定如何工作。我对JavaScript还是很陌生,所以任何帮助都会很棒。
最佳答案
尝试通过调用gridData.toJson()
将数据数组(在您的情况下为gridData)转换为json数组。并尝试类似:
gridData = [{name: "tester 03", param2: "test3"},
{name: "tester 01", param2: "test1"},
{name: "tester 02", param2: "test2"}]; //Assuming some test values here
var sortedData = a.sort(function(e,f) {
return e.name < f.name; //by name or description or whatever
});
或将其转换为函数,如果此目录与排序方向有关
function sortData(arr, sorter) {
return arr.sort(function(e,f) {
return sorter.dir == "desc" ?
e[sorter.field] < f[sorter.field] : e[sorter.field] > f[sorter.field];
});
}
并传递如下值:
sortData(gridData, {field: "Description", dir: "desc"})
希望它能工作。
关于javascript - 在Kendo UI Grid中对Grid数据进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39794310/