【问题标题】:Sorting Grid data in kendo UI Grid在 kendo UI Grid 中对 Grid 数据进行排序
【发布时间】:2016-09-30 14:50:21
【问题描述】:

我想将检索到的数据排序到描述字段,但排序不起作用。

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 很陌生,所以任何帮助都会很棒。

【问题讨论】:

  • 这个链接有帮助吗? --> stackoverflow.com/questions/13863111/…
  • var kendoGrid = $("#grid").data('kendoGrid');其实我不明白这一行。
  • 我已经看到了这个问题,但它对我不起作用
  • var kendoGrid = $("#grid").data('kendoGrid');只返回元素#grid的剑道网格对象
  • element.data('kendoGrid'); var x=element.kendoWindow({...}).data('kendoGrid');

标签: javascript kendo-ui kendo-grid


【解决方案1】:

尝试通过调用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"})

希望它有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    相关资源
    最近更新 更多