未捕获的TypeError:无法读取未定义的属性“长度”(剑道图)

时间:2013-05-09 04:55:24

标签: charts kendo-ui

我的剑道图有问题,当从控制器返回的项目列表没有项目时我有错误:

Uncaught TypeError: Cannot read property 'length' of undefined kendo.all.min.js:28
    Vt.extend._bindCategoryAxis kendo.all.min.js:28
    Vt.extend._bindCategories kendo.all.min.js:28
    Vt.extend._onDataChanged kendo.all.min.js:28
    b.isFunction.i jquery-1.9.1.min.js:3
    i.extend.trigger kendo.all.min.js:9
    tt.extend._process kendo.all.min.js:11
    tt.extend.success kendo.all.min.js:11
    b.isFunction.i jquery-1.9.1.min.js:3
    n.success kendo.all.min.js:11
    c jquery-1.9.1.min.js:3
    p.fireWith jquery-1.9.1.min.js:3
    k jquery-1.9.1.min.js:5
    r jquery-1.9.1.min.js:5

如果我从代码中删除categoryAxis,所有工作都按预期工作,无论是否有数据,但问题是我不会在x轴上显示时间:

function createChart() {
    $("#chart").kendoChart({
        dataSource: {
            transport: {
                read: {
                    url: "@Url.Action("GetLostDaysTrend", "Production")"+"?
                        initDate="+startDate+"&endDate="+endDate+"&reactor="+reactor                             
                    ,contentType: "application/json",
                    type: "POST"
                 },
                 parameterMap: function (options) {
                     return JSON.stringify(options);
                 }
            },
            group: {
                field: "Reactor"
            },
            sort: {
                field: "Fecha",
                dir: "asc"
            }
        },
        title: {
            text: "Tendencias de dias perdidos"
        },
        legend: {
            position: "top"
        },
        seriesDefaults: {
            type: "line"
        },
        series:
        [{
            field: "Acumulado",
            name: "Acumulado",
            groupNameTemplate: "#= group.value # (#= series.name #)"
        }],
        categoryAxis: {
            field: "Fecha",
            labels: {
                template: "#= formatDate(value) #",
                rotation: -90
            }
        },
        tooltip: {
           visible: true,
           format: "N0"
        }
    });
}

我正在解决这个问题,任何线索?

2 个答案:

答案 0 :(得分:2)

遇到同样的问题并通过检查数组的长度是否为零来修复它:

parameterMap: function (options) {
...

    if (options.sort.length == 0) {
    return [];
    }
    else {
    return options.sort[0].field + ',' + options.sort[0].dir;
    }
}

答案 1 :(得分:0)

我能找到的最好的是它是由于一个空的数据集。您可以尝试以下解决方法:http://www.kendoui.com/forums/ui/grid/grid-empty-result-response-handling.aspx