在Asp.Net中使用Datatable的Highcharts

时间:2013-10-09 03:03:35

标签: c# jquery .net jquery-ui highcharts

实际上,我正在使用PieChart HighCharts来显示我的数据 数据已获取绑定但Tooltips未正确显示 当我将相同的数据绑定到LineChart时,它显示完美。但是当来到PieChart时,会出现此问题。 甚至数据显示为Slices,如下:

enter image description here

我的代码是这样的:

<highchart:PieChart ID="chart1" Width="500" Height="500" runat="server" />

SqlDataAdapter da = new SqlDataAdapter("select * from SURVEY_ORG where USERS<>0", con);
            DataSet ds = new DataSet();
            da.Fill(ds);
            chart1.PlotOptions = new Highchart.Core.PlotOptions.PlotOptionsPie
            {
                allowPointSelect = true,
                cursor = "pointer",
                dataLabels = new Highchart.Core.PlotOptions.DataLabels { enabled = true }
            };
            PointCollection pc = new PointCollection();
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                pc.Add(new Point(ds.Tables[0].Rows[i]["ORG_NAME"], Convert.ToInt64(ds.Tables[0].Rows[i]["USERS"])));
            }            
            var series = new Collection<Serie>();
            series.Add(new Serie() { data = pc.ToArray() });
            chart1.PlotOptions = new Highchart.Core.PlotOptions.PlotOptionsPie
            {
                allowPointSelect = true,
                cursor = "Pointer",
                showInLegend = true,
                dataLabels = new Highchart.Core.PlotOptions.DataLabels
                {
                    enabled = true
                }
            };
            chart1.Tooltip = new ToolTip { formatter = "function() { return '<b>'+ this.point.name +'</b>: '+ this.percentage.toFixed(2) +' %'; }" };
            chart1.Title = new Highchart.Core.Title("Custom Title");
            chart1.PlotOptions.shadow = false;
            chart1.DataSource = series;
            chart1.DataBind()

我想在Legendsslice

的位置显示“ORG_NAME”

2 个答案:

答案 0 :(得分:2)

我得到了答案 PieChart的绑定方式略有不同。

SqlDataAdapter da = new SqlDataAdapter("select ORG_NAME,USERS from SURVEY_ORG where USERS<>0", con);
            da.Fill(dataSet);
            Int32 totalArraySize = dataSet.Tables[0].Rows.Count;
            Object[] XAxisData = new object[totalArraySize];
            Object[] YAxisServices = new object[totalArraySize];
            int J = 0;
            foreach (DataRow drRow in dataSet.Tables[0].Rows)
            {
                YAxisServices[J] = new object[] { drRow[0].ToString(), Convert.ToInt32(drRow[1].ToString()) };
                J += 1;
            }
            Highchart.Core.SerieCollection series = new Highchart.Core.SerieCollection();
            Highchart.Core.Data.Chart.Serie serieServices = new Highchart.Core.Data.Chart.Serie();
            serieServices.size = 130;
            serieServices.data = YAxisServices;
            serieServices.type = RenderType.pie;
            serieServices.name = "";
            serieServices.showInLegend = false;
            series.Add(serieServices);

            chart1.PlotOptions = new Highchart.Core.PlotOptions.PlotOptionsPie
            {
                allowPointSelect = true,
                cursor = "pointer",
                dataLabels = new Highchart.Core.PlotOptions.DataLabels { enabled = true, formatter = "this.point.name" },
                animation = false
            };
            chart1.Tooltip = new ToolTip("this.point.name +': '+ this.y");
            chart1.DataSource = series;
            chart1.DataBind();
            chart1.Dispose();

答案 1 :(得分:0)

试试..

Legend legend = new Legend();    
legend.Layout = Layouts.Vertical;
legend.Align = HorizontalAligns.Left;
legend.VerticalAlign = VerticalAligns.Top;
legend.X = 100;
legend.Y = 70;
legend.Floating = true;
legend.BackgroundColor = ColorTranslator.FromHtml("#FFFFFF");
legend.Shadow = true;
chart1.Legend.enabled = true;
chart1.Legend = legend;