在c# ASP.NET中使用HighCharts JS进行数据预处理

本文关键字:JS 数据 预处理 HighCharts ASP NET | 更新日期: 2023-09-27 18:17:34

我在ASP中创建一个条形图。. NET 2.0使用HighCharts JS。

这是如何在javascript中做图表:

$(function () { 
    $('#container').highcharts({
        chart: {
            type: 'bar'
        },
        title: {
            text: 'Fruit Consumption'
        },
        xAxis: {
            categories: ['Apples', 'Bananas', 'Oranges']
        },
        yAxis: {
            title: {
                text: 'Fruit eaten'
            }
        },
        series: [{
            name: 'Jane',
            data: [1, 0, 4]
        }, {
            name: 'John',
            data: [5, 7, 3]
        }]
    });
});​

我有这个在c#代码后面:

public string[] Names = new string[] { "Name1", "Name2", "Name3"};
public string[] Data = new  string[] { "[1,0,4]", "[5,7,3]", "[2,3,4]"};

我如何在javascript中使用这个字符串[]名称和数据来改变图表的值?

请帮帮我,我卡在里面了。(谢谢!

—EDIT for ARISTOS—

我试过你的答案,但没有用。根据你的答案,这个javascript将与你所做的相同。检查这个:

$(function () { 
    var seriesTest = "{ name: 'Jane', data: [1, 0, 4] }, { name: 'John', data: [5, 7, 3] }";
    $('#container').highcharts({
        chart: {
            type: 'bar'
        },
        title: {
            text: 'Fruit Consumption'
        },
        xAxis: {
            categories: ['Apples', 'Bananas', 'Oranges']
        },
        yAxis: {
            title: {
                text: 'Fruit eaten'
            }
        },
        series: [seriesTest]
    });
});​

我已经试过了,但这不起作用,因为我认为系列。Data只接受括号([])内的整数。

我已经检查了DotNet。HighCharts是KingCronus建议的,但这不能在asp.net 2.0框架中使用。(

在c# ASP.NET中使用HighCharts JS进行数据预处理

对于最简单的形式,您只需要以正确的格式呈现它们。下面是一个简单的例子,可能需要几周的时间……

在后面的代码上运行,可能是在PageLoad

StringBuilder sb = new StringBuilder();
for(int i = 0 ; i < 3 ; i++)
 sb.AppendFormat("{3}{{name: '{0}',data: {1} }}", 
      Names[i], Data[i], 
       i>0 ? "," : "" // this is render the comma "," after the first line
  );    
ScriptData.Text = sb.ToString();

并使用Literal控件

将它们放置在页面上的脚本上
$(function () { 
    $('#container').highcharts({
        chart: {
            type: 'bar'
        },
        title: {
            text: 'Fruit Consumption'
        },
        xAxis: {
            categories: ['Apples', 'Bananas', 'Oranges']
        },
        yAxis: {
            title: {
                text: 'Fruit eaten'
            }
        },
        series: [
        <asp:Literan id="ScriptData" Runat="server" EnableViewState="off" />
        ]
    });
});?

这是我对我的问题的解决方案,以防有人也需要这个。

下面是JS函数:
function LoadChart() {
    var Names = <%= this.javaSerial.Serialize(this.Names %>;
    var Data =  <%= this.javaSerial.Serialize(this.Data %>;
    var options = {
        chart: {
            renderTo: 'container',
            type: 'bar'
        },
        title: {
            text: 'Fruit Consumption'
        },
        xAxis: {
            categories: ['Apple', 'Banana', 'Orange']
        },
        yAxis: {
            title: {
                text: 'fruit eaten'
            }
        },
        series: [{
            name: Names[0],
            data: [Data[0]]
        }]
    };
    for (var i=1; i<Names.Length; i++)
    {
        options.series.push({
            name: Names[i],
            data: [Data[i]]
        });
    }
    var chart = new Highcharts.Chart(options);
}

下面是部分代码:

public JavaScriptSerializer javaSerial = new JavaScriptSerializer(); 
public string[] Names = new string[] { "Jane", "John", "Mike" };
public string[] Data = new string[] { "1,2,3", "2,4,6", "3,6,9" }