HighCharts Multiseries绑定

时间:2013-10-21 14:45:32

标签: c# json highcharts

我为单个系列开发了高图表图,但无法绑定多个系列。

我的要求如下所示

我有复选框列表并包含如下,当用户选择多个复选框并点击加载按钮时,高图表将显示他选择的内容。

TYPE A

TYPE B

TYPE C

TYPE D. ........ TYPE Z

我只能在一个复选框中完成,但我不确定如何编码多个选项并在高级图表中显示。

我是高级排行榜的新手,任何人都会非常感激。

我的Javascript代码:

<script type="text/javascript">

    $(function () {
        var chart = new Highcharts.Chart({

            chart: {

                renderTo: 'container',
                type: 'spline',
                zoomType: 'x',
                spacingRight: 50

            },

            title: {
                text: 'Sample Spline Chart',

                x: -20 //center
            },
            subtitle: {
            text: document.ontouchstart === undefined ?
                'Click and drag in the plot area to zoom in' :
                'Pinch the chart to zoom in',
                 x: -20
             },

            xAxis: {
                type: 'datetime',
                dateTimeLabelFormats: {
                day: '%e %b %y',
                minute: '%l%M<br>%p'

               }
            },
            yAxis: {
                title: {
                text: 'Values'
                },
             min: 0
            },
            series: [{

                name: 'Value',
                data: <%= chartData1%>


           }]

        });

    });


</script>

C#代码:

protected void btnLoad_Click(object sender, EventArgs e)
{
    selectedLists.Clear();

    foreach (ListItem item in chkboxTypes.Items)
    {
        if (item.Selected == true)
        {
            var selected = item.Text.Split(',');

            selectedLists.Add(selected[0]);
        }
    }

    foreach (var item in selectedLists)
    {
        typeID = item;

        var fromdate = fromdatepicker.Value;

        var todate = todatepicker.Value;

        var dsSql = string.Format(@"SELECT START_DATETIME, VALUE FROM XXXXX WHERE  TYPE_ID = '{0}' AND START_DATETIME >= '{1} 00:00' AND END_DATETIME <= '{2} 23:59' ORDER BY START_DATETIME ASC", typeID, fromdate, todate);

        var database = new Database(dbstring, "System.Data.SqlClient");
        database.CommandTimeout = 3600;
        var dataSourcesAttributes = database.Fetch<DataPoint>(dsSql);


        var chkboxData = string.Empty;

        if (dataSourcesAttributes.Count > 0)
        {

            foreach (var data in dataSourcesAttributes)
            {
                listDimensionalValues.Add(Tuple.Create(data.AppliesToDateTime, data.Value));

                JavaScriptSerializer serializeData = new JavaScriptSerializer();
                var Validdata = serializeData.Serialize(listDimensionalValues.ToArray());

                chkboxData = Properdata(Validdata);
            }
            chartData1 = chkboxData;
        }
        else
        {

            lblError.Visible = true;
            lblError.Text = databasevalue + " There is no data available for this Type or please select different dates";

        }
    }

}

ChartData 1字符串

 public string chartData1 { get; set; }

请提出任何建议或帮助伙伴

1 个答案:

答案 0 :(得分:0)

这可以通过两种方式完成。

1.首先加载所有系列,然后使用

隐藏未经检查的系列
chart.series[index].hide();

当用户选中复选框时,使用

将它们带入视图
chart.series[index].show();

只有当您可以使用所有系列的数据时才能这样做。

显示/隐藏http://jsfiddle.net/JACDP/

的示例小提琴

2.动态添加或删除系列。

首先使用默认系列加载图表。

当用户选中新复选框时,使用

添加一个系列
chart.addSeries({
name: ,
data: [],
})

添加系列的示例:http://jsfiddle.net/9JzLN/ 未选中时使用

chart.series[index].remove();

删除系列http://jsfiddle.net/ArkxY/

的示例

希望这会对你有所帮助。