Design Code:
<asp:Chart ID="Chart1" runat="server" Height="340px"
Palette="SemiTransparent" Width="528px">
<Series>
<asp:Series ChartType="Pie"
CustomProperties="PieLineColor=BlanchedAlmond, PieDrawingStyle=SoftEdge"
Legend="Legend1" Name="Series1">
</asp:Series>
</Series>
<ChartAreas>
<asp:ChartArea Name="ChartArea1">
<Area3DStyle Enable3D="True" />
</asp:ChartArea>
</ChartAreas>
<Legends>
<asp:Legend Alignment="Far" Docking="Top" Name="Legend1">
</asp:Legend>
</Legends>
<BorderSkin BackColor="BurlyWood" BackGradientStyle="HorizontalCenter"
BackSecondaryColor="Blue" SkinStyle="Emboss" />
</asp:Chart>
C# code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.DataVisualization.Charting;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
public partial class PieChart : System.Web.UI.Page
{
SqlConnection con;
protected void Page_Load(object sender, EventArgs e)
{
con = new SqlConnection(ConfigurationManager.ConnectionStrings["CONN"].ConnectionString.ToString());
// Collection to hold X Axis and Y Axis Values
Dictionary<string, Decimal> xyValue = new Dictionary<string, Decimal>();
// Call to chart Data method which return dictionary collection of demo data
xyValue = chartData();
// Binding collection key value pair to chart's default series
Chart1.Series[0].Points.DataBindXY(xyValue.Keys, xyValue.Values);
Chart1.Series[0].Label = "#VALX (#PERCENT{P0})";
//=================
int chartPoints = 0;
chartPoints = Chart1.Series[0].Points.Count;
for (int i = 0; i < chartPoints; i++)
{
Chart1.Series[0].Points[i].CustomProperties += "Exploded=true";
}
}
public DataTable FetchSale()
{
SqlDataAdapter da = new SqlDataAdapter("Select * from SALE", con);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
protected Dictionary<string, Decimal> chartData()
{
// Object to generate random numbers to populate demo data
//Random rnd = new Random(1);
DataTable dtsale = FetchSale();
Dictionary<string, Decimal> values = new Dictionary<string, Decimal>();
//Populating collection with random values
for (int i = 0; i < dtsale.Rows.Count; i++)
{
values.Add(dtsale.Rows[i][0].ToString(), Convert.ToDecimal(dtsale.Rows[i][1].ToString()));
}
return values;
}
}
Page View:
Can we make each slice of chart clickable. If yes then can you guide me.
ReplyDeleteThanks