Reputation: 1941
Actually,I'm using PieChart
of HighCharts
to display my data.
The data is Getting binded but the Tooltips
are not displaying correctly.
When I'm binding the same data to LineChart
,It is displaying perfectly.But when comes to PieChart
,this problem comes.
and even the data is displaying as Slices
like Below :
My Code goes like this :
<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()
I want to Display "ORG_NAME" in Legends
and in the place of slice
Upvotes: 1
Views: 7337
Reputation: 1941
I got the Answer.
The way of binding is bit different for 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();
Upvotes: 2
Reputation: 179
try it..
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;
Upvotes: 0