You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Account字段配置Kendo Chart实现多账户数据柱状图展示

Kendo Chart按Account字段配置多系列柱状图问题

原创建图表的代码如下:

<div id="chart"></div>

function createChart() {
    $("#chart").kendoChart({
        dataSource: {
            transport: {
                read: {
                    url: '@Url.RouteUrl(new { Area = "SuperAdmin", Controller = "DeviceDataUsage", Action = "DeviceDataUsageChart" })',
                    type: "POST",
                    dataType: "json"
                }
            },
            sort: {
                field: "Date",
                dir: "asc"
            }
        },
        categoryAxis: {
            field: "Date"
        }
    });
}

$(document).ready(function () {
    createChart();
});

需求说明

Ajax返回的JSON数据包含Date、Account、ByteUsed字段,存在多个不同账户的日期数据(部分日期某账户无数据时,ByteUsed视为0)。需要实现X轴为日期、Y轴为ByteUsed,每个日期下按Account展示对应柱状条的图表。


解决方案

要实现按Account分组的多系列柱状图,需对Kendo Chart的数据源和系列配置做以下调整:

1. 配置数据源分组

在dataSource中添加group配置,按Account字段分组,让数据源自动将相同账户的数据归类:

dataSource: {
    transport: {
        read: {
            url: '@Url.RouteUrl(new { Area = "SuperAdmin", Controller = "DeviceDataUsage", Action = "DeviceDataUsageChart" })',
            type: "POST",
            dataType: "json"
        }
    },
    sort: {
        field: "Date",
        dir: "asc"
    },
    // 新增分组配置
    group: {
        field: "Account"
    }
}

2. 配置图表系列

使用模板自动生成每个账户对应的系列,指定Y轴字段为ByteUsed:

series: {
    type: "column",
    field: "ByteUsed",
    // 自动将分组的Account名作为系列名称
    name: "#= group.value #",
    // 可选:设置同日期柱状条的间距,让排列更紧凑
    spacing: 0.1
}

完整配置后的代码

<div id="chart"></div>

function createChart() {
    $("#chart").kendoChart({
        dataSource: {
            transport: {
                read: {
                    url: '@Url.RouteUrl(new { Area = "SuperAdmin", Controller = "DeviceDataUsage", Action = "DeviceDataUsageChart" })',
                    type: "POST",
                    dataType: "json"
                }
            },
            sort: {
                field: "Date",
                dir: "asc"
            },
            group: {
                field: "Account"
            }
        },
        categoryAxis: {
            field: "Date",
            // 可选:格式化日期显示格式
            labels: {
                format: "yyyy-MM-dd"
            }
        },
        series: {
            type: "column",
            field: "ByteUsed",
            name: "#= group.value #",
            spacing: 0.1
        },
        // 可选:添加底部图例,展示各账户对应的系列
        legend: {
            position: "bottom"
        },
        valueAxis: {
            label: {
                // 可选:将ByteUsed转换为MB单位显示
                template: "#= kendo.format('{0:N2} MB', value / 1024 / 1024) #"
            },
            title: {
                text: "数据使用量"
            }
        }
    });
}

$(document).ready(function () {
    createChart();
});

关键说明

  • 数据源的group配置会自动聚合相同Account的数据,Kendo Chart会为每个分组生成独立的柱状条系列。
  • series.name使用#= group.value #可直接将账户名作为系列名称,无需手动逐个定义系列。
  • 确保后端在某账户无数据的日期,返回该账户对应ByteUsed为0,避免图表系列错位。

内容的提问来源于stack exchange,提问作者Oleg Sh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 01:45:34