Gulrej
Gulrej

Reputation: 999

multiple series in column chart asp.net 4.0

I am trying to create a StackedColumn chart in my asp.net application. So I have a datatable like this -

            DataTable dtTemp = new DataTable();
            dtTemp.Columns.Add("Phase", typeof(string));
            dtTemp.Columns.Add("Status", typeof(string));
            dtTemp.Columns.Add("Count", typeof(int));

            dtTemp.Rows.Add("Initiate", "Pending", 10
            dtTemp.Rows.Add("Initiate", "OnHold", 20);
            dtTemp.Rows.Add("Initiate", "Rejected", 3);
            dtTemp.Rows.Add("Initiate", "Cancelled", 5);
            dtTemp.Rows.Add("Initiate", "Pending IT", 2);
            dtTemp.Rows.Add("Setup", "Setup", 25);

Now I want the chart to display 2 column, first column will show the Initiate phase data with different status data. And 2nd column will show setup phase data. I have tried like this -

foreach (DataRow row in dtTemp.Rows)
            {
                string seriesName = row["Status"].ToString();
                chart_ProjectStatus.Series.Add(seriesName);
                chart_ProjectStatus.Series[seriesName].ChartType = SeriesChartType.StackedColumn;
                chart_ProjectStatus.Series[seriesName].ChartArea = "ChartArea1";
                chart_ProjectStatus.Series[seriesName].CustomProperties = "DrawingStyle=Cylinder, MaxPixelPointWidth=50";

                chart_ProjectStatus.Series[seriesName].Points.AddXY(row["Phase"].ToString(), Convert.ToInt32(row["Count"].ToString()));
            }

But I am getting only one column -

enter image description here

Please some one help me.

Thanks in advance Gulrej

Upvotes: 2

Views: 2301

Answers (1)

Gowtham.K.Reddy
Gowtham.K.Reddy

Reputation: 997

<b>  Hope this will Help you </b>

       DataTable dtTemp = new DataTable();
        dtTemp.Columns.Add("Phase", typeof(string));
        dtTemp.Columns.Add("Status", typeof(string));
        dtTemp.Columns.Add("Count", typeof(int));
        dtTemp.Columns.Add("StackGroupName", typeof(string));

        dtTemp.Rows.Add("Initiate", "Pending", 10, "Group1");
        dtTemp.Rows.Add("Initiate", "OnHold", 20, "Group1");
        dtTemp.Rows.Add("Initiate", "Rejected", 3, "Group1");
        dtTemp.Rows.Add("Initiate", "Cancelled", 5, "Group1");
        dtTemp.Rows.Add("Initiate", "PendingIT", 2, "Group1");

        dtTemp.Rows.Add("Setup", "Setup", 25, "Group2");
        dtTemp.Rows.Add("Setup", "INSTALLED", 55, "Group2");

        dtTemp.AcceptChanges();



  Series ss;
        for (int i = 0; i < dtTemp.Rows.Count; i++)
        {
            ss = new Series();
            ss.Name = dtTemp.Rows[i][1].ToString();
            ss.ChartType = SeriesChartType.StackedColumn;
            ss["StackedGroupName"] = dtTemp.Rows[i]["StackGroupName"].ToString();
            ss["DrawingStyle"] = "Cylinder";

            ss.Points.AddXY(Convert.ToString(dtTemp.Rows[i]["Phase"]), Convert.ToInt32(dtTemp.Rows[i]["Count"]));
            ss.IsValueShownAsLabel = true;                
            ChartSideBySideStacked.Series.Add(ss);
        }


        ChartArea chartAread = new ChartArea();
        chartAread.Area3DStyle.Enable3D = true;
        chartAread.Area3DStyle.Rotation = 5;
        chartAread.Area3DStyle.Inclination = 10;
        chartAread.Area3DStyle.IsRightAngleAxes = false;
        ChartSideBySideStacked.ChartAreas.Add(chartAread);
        ChartSideBySideStacked.Legends.Add(new Legend("CHartLEgend"));
        ChartSideBySideStacked.AlignDataPointsByAxisLabel(); // Chart Object Name : ChartSideBySideStacked
  • Enable 3D
  • U must Provide Stacked Group Name for Each Series
  • Set Rotation Angle
  • Set Inclination and IsRightAngleAxes

    this one is working fine ... please note i am using VS 2010.. Asp.Net

Result Produced

Upvotes: 1

Related Questions