如何正确格式化HighChart的“数据”

时间:2013-11-27 14:03:59

标签: c# javascript highcharts

我有以下代码 -

C#

string data = string.Format("[{0}]", string.Join(",", listOfInts));
string script = string.Format("chart('{0}','{1}','{2}','{3}','{4}','{5}','{6}');",
startYear, startMonth, startDay, startHour, startMinute, chartTitle, data);

 ScriptManager.RegisterStartupScript(this, GetType(), "chart", script, true);

的Javascript

series: [{
             type: 'area',
             name: 'Count:',
             pointInterval:  3600 * 1000,
             pointStart: Date.UTC(startYear, startMonth, startDay, startHour, startMinute),
             data: intsAsJSArray

        }]

inrtAsJSArray = "[1,2,3,4,5,6,7]"

这打破了图形功能,我意识到这是由于data格式错误。

但是,如果我将data部分硬编码为 -

series: [{
             type: 'area',
             name: 'Count:',
             pointInterval:  3600 * 1000,
             pointStart: Date.UTC(startYear, startMonth, startDay, startHour, startMinute),
             data: [1,2,3,4,5,6,7]

        }]

这是有效的,如何重新配置​​intASJarray才能被接受进入系列?

3 个答案:

答案 0 :(得分:1)

您可以将字符串解析为数组

var str = "[1,2,3,4,5,6,7]";

var trim = str.replace(/[\[\]]/g, "");

var data = trim.split(",");

data = data.map(function (d) {
    return +d;
});

console.log(data);

这是演示jsfiddle

答案 1 :(得分:0)

我对RegisterStartupScript并不熟悉,但问题的关键在于你的intASJarray会以javascript字符串而不是数组结束。

尝试:

string script = string.Format("chart('{0}','{1}','{2}','{3}','{4}','{5}',{6});",
   startYear, startMonth, startDay, startHour, startMinute, chartTitle, data);

注意我已经删除了字符串格式{6}参数的引号。您可能还需要为数据部分执行此操作。

答案 2 :(得分:0)

如果您定位支持JSON.parse()的浏览器,则可以像这样解析字符串:

  series: [{
         type: 'area',
         name: 'Count:',
         pointInterval:  3600 * 1000,
         pointStart: Date.UTC(startYear, startMonth, startDay, startHour, startMinute),
         data: JSON.parse(intsAsJSArray)

    }]

工作样本:http://jsfiddle.net/MnsuS/