2012-06-18 74 views
1

数据我是新的网页设计,我试图填充用C#从SQL数据库中的数据highcharts饼图。我已经成功完成了条形图,但在饼图上遇到了麻烦。基本上我有一个表tblReport1,其中包含2个字段CustomerType和TotalOrdersHighCharts填充饼图与SQL数据库

我可以得到它带来的价值,但我不能让我的切片重命名为CustomerType字段中的数据。我已经在这个论坛上尝试了几个建议,但无法让他们工作。以下是我的代码,任何建议将不胜感激。

private void Report1() 
{ 
    dsSeries = BindData(); 

    if (dsSeries == null) return; 

    foreach (DataRow dr in dsSeries.Tables[0].Rows) 
    { 
     hidXCategories11.Add(dr["CustomerType"]); 
    } 

    foreach (DataRow dr1 in dsSeries.Tables[0].Rows) 
    { 
     hidValues11.Add(Convert.ToInt32(dr1["TotalOrders"])); 
     yValues = hidValues11.ToArray(typeof(object)) as object[]; 
    } 


    DotNet.Highcharts.Highcharts chart = new DotNet.Highcharts.Highcharts("chart") 
    .InitChart(new Chart { PlotShadow = false }) 
    .SetTitle(new Title { Text = "Orders by Customer Type" }) 
    .SetTooltip(new Tooltip { Formatter = "function() { return '<b>'+ this.point.name +'</b>: '+ this.y +' Orders'; }" }) 
    .SetPlotOptions(new PlotOptions 
    { 
     Pie = new PlotOptionsPie 
     { 
      ShowInLegend = true, 
      AllowPointSelect = true, 
      DataLabels = new PlotOptionsPieDataLabels 
      { 
       Formatter = "function() { return '<b>'+ this.point.name +'</b>: '+ this.y; }" 
      } 
     } 
    }) 

    .SetSeries(new[] 
     { 
       new Series { Type = ChartTypes.Pie, Name = "help!", Data = new Data(yValues) } 
     }); 



    ltrChart.Text = chart.ToHtmlString(); 

} 
+0

你可以忍受发送给客户端的javscript的样子吗?这是.NET代码(我甚至不知道有.NET接口),但“真正的”高位代码都运行在客户端。一目了然,您看起来像是在设置正确的选项,但是更容易检查我们是否可以在JavaScript中看到真正的选项。 – Chris

+0

嗨克里斯我没有JavaScript的只是一个部分我的aspx文件中的和我链接到highchart.js文件 – bsmith

+0

@bsmith,你可以看看你的文字标签应该在的位置的“实时”页面,然后告诉我们这个javascript是什么? .NET highcharts API创建一个它写入的文字标签(它实际上只是创建一串javascript并将其放入文字标签中 - 或多或少)。 – wergeld

回答

2

http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/demo/pie-basic/寻找饼图数据格式为两个部分,标签和数据项。

在你的样子该系列数据为整数的只是一个单一的阵列。

所以我认为你需要改变你的Series对象来接受数据的不同格式。

可悲的是Highcharts.Net文档中的例子是有点欠缺,做似乎没有这方面的例子,所以你可能要看看智能感知所提供的。

底线是,虽然你的馅饼楔子需要在数据系列被命名,而不是作为类别或其他任何东西。

编辑了一些示例代码

我看他们的网站,他们有一个帮助论坛那里当中它

 series.Add(new Serie 
     { 
      data = new object[] { 
       new object[] { "Firefox", 45 }, 
       new object[] { "IE", 24.8 }, 
       new object[] { "Chrome", 12.8 }, 
       new object[] { "Safari", 8.5 }, 
       new object[] { "Opera", 5.2 }, 
       new object[] { "Outros", 3.7 } 
      } 
     }); 

源下面的示例代码:http://highcharts.codeplex.com/discussions/269347

我不能测试这个,但从帖子的上下文看,它应该做这项工作。

+0

对于数据值我使用数据类型对象来存储值你知道我需要使用的切片名称。我已经尝试了一个数组列表和字符串,但都没有工作 – bsmith

+0

@bsmith:你可以发布一些工作代码..你接受这个答案 – RealSteel