实际上,我正在使用PieChart
HighCharts
来显示我的数据
数据已获取绑定但Tooltips
未正确显示
当我将相同的数据绑定到LineChart
时,它显示完美。但是当来到PieChart
时,会出现此问题。
甚至数据显示为Slices
,如下:
我的代码是这样的:
<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()
我想在Legends
和slice
答案 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;