Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C Google Chart JSON,没有足够的列来绘制请求的图表_C#_Asp.net Mvc_Json_Google Visualization - Fatal编程技术网

C# C Google Chart JSON,没有足够的列来绘制请求的图表

C# C Google Chart JSON,没有足够的列来绘制请求的图表,c#,asp.net-mvc,json,google-visualization,C#,Asp.net Mvc,Json,Google Visualization,我试图让Google图表处理DataContext数据库中的数据。 使用此代码: public JsonResult getYearChart(clientId) { DataDataContext db = new DataDataContext(); var alldata = (from deba in db.debViews where deba.ClientID == clientId gro

我试图让Google图表处理DataContext数据库中的数据。 使用此代码:

public JsonResult getYearChart(clientId)
{
    DataDataContext db = new DataDataContext();

    var alldata = (from deba in db.debViews
                   where deba.ClientID == clientId
                   group deba by deba.Date.Value.Month 
                   into grp
                   select new
                       {
                           Month = grp.Key,
                           Price = grp.Sum(x => x.Price)
                       }).ToList();

    var cols = new[] { new { Month ="Month", Price ="Total" } };

    var ret = new[]
        {
            new { data = cols.Select(x => new string[] { x.Month, x.Price }) },
            new { data = alldata.Select(x => new string[] { x.Month.ToString(), Convert.ToString(x.Price) }) }
        };
并返回带有Json的ret。 这不起作用,它只是给了我足够的列来绘制所需的图表。使用DataContext中的数据动态生成google图表的最佳实践是什么

这是我用来绘制Json响应图表的JavaScript

google.load("visualization", "1", { packages: ["corechart"] });
google.setOnLoadCallback(drawChart);

function drawChart() {

    $.post('Ex/getYearChart', {},
function (data) {
    var tdata = new google.visualization.DataTable();
    var rows = data.length;
    var cols = data[0].length;

    tdata.addColumn('string', data[0][0]);
    for (var i = 0; i < cols; i++) {
        tdata.addColumn('number', data[0][i]);
    }

    tdata.addRows(data.length);
    for (var i = 1; i < data.length; i++) {
        tdata.setCell(i, 0, data[i][0]);
        for (var j = 1; j < cols; j++) {
            var value = parseInt(data[i][j]);
            tdata.setCell(i, j, value);

        }
    }

    var options = {
        title: 'Test Chart',
        isStacked: true,
        width: 500,
        height: 400,
        vAxis: { title: "More Text" },
        hAxis: { title: "Date" }
    };
    var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
    chart.draw(tdata, options);

}
    )}

在您给出数据内容的示例之前,我无法确定问题是什么,但我知道这会给您带来问题,即使数据没有问题:


您应该开始从1开始递增i,而不是从0开始递增i,因为您已经为每行的第一个元素添加了一列。

请澄清什么不起作用?请编辑问题,并更改标题以更好地描述您的问题。C Google Chart JSON不是问题的描述,您的标记已经提到了相关主题/技术。更改了标题并编辑了文本。用数据内容的示例更新您的问题。
tdata.addColumn('string', data[0][0]);
for (var i = 0; i < cols; i++) {
    tdata.addColumn('number', data[0][i]);
}