Kendo ui 剑道图分组/排序

Kendo ui 剑道图分组/排序,kendo-ui,kendo-dataviz,Kendo Ui,Kendo Dataviz,这是我遇到的问题的一个例子: 我试图在剑道图的条形图分组后对它们进行排序。我想按第三个字段(而不是类别或组)对它们进行排序。在上面的示例中,当我单击Sort by Score时,我希望第二组条按降序排序(Sort by CustomOrder字段) 我错过了什么?谢谢 var group = "Student"; var category = "Test"; var sort = "Student"; function updateChart() { var chart = $("#c

这是我遇到的问题的一个例子:

我试图在剑道图的条形图分组后对它们进行排序。我想按第三个字段(而不是类别或组)对它们进行排序。在上面的示例中,当我单击Sort by Score时,我希望第二组条按降序排序(Sort by CustomOrder字段)

我错过了什么?谢谢

var group = "Student";
var category = "Test";
var sort = "Student";

function updateChart() {
    var chart = $("#chart").data("kendoChart");

    chart.dataSource.group([{ field: group }]);
    chart.dataSource.sort([{ field: sort }]);
    chart.options.categoryAxis.field = category;

    chart.options.title = "group by " + group + ", sort by " + sort;

    chart.refresh();
}

这可能并不完美,但希望你能理解。如果绑定到数据源,则在数据源上进行排序和分组,它将触发图表的刷新

var myDataSource = new kendo.data.DataSource({
    data: jsonData,
    group: [{ "field": "Student"}],
    sort: [
        { "field": "Test", "dir": "asc" },
        { "field": "CustomOrder", "dir": "asc" }
    ],
    schema: {
        model: {
            fields: {
                Student: {
                    "type": "string"
                },
                Test: {
                    "type": "string"
                },
                Value: {
                    "type": "number"
                },
                CustomOrder: {
                    "type": "number"
                }
            }
        }
    }
});

function groupByTest_click() {    
    group = "Test";
    category = "Student";
    updateChart();
    $('#chart').data('kendoChart').dataSource.group([{ field: group }]);
    $('#chart').data('kendoChart').dataSource.sort([{ field: sort, dir: "desc" }]);    
}

在图表定义中,设置“组”:[],“排序”:[],并在每个方法中根据需要设置变量。如果要区分“asc”和“desc”,可能需要添加方向变量。正如@carter指出的,组和.sort将调用数据源上的刷新。由于您在定义中对组和排序都进行了“硬编码”,因此在刷新时优先。