列图中的多个系列asp.net 4.0

时间:2013-11-26 05:23:59

标签: c# asp.net charts

我正在尝试在我的asp.net应用程序中创建StackedColumn图表。所以我有一个这样的数据表 -

            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);

现在我希望图表显示2列,第一列将显示具有不同状态数据的Initiate阶段数据。第二列将显示设置阶段数据。我试过这样的事 -

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()));
            }

但我只得到一栏 -

enter image description here

请有人帮助我。

提前致谢 Gulrej

1 个答案:

答案 0 :(得分:1)

<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
  • 启用3D
  • U必须为每个系列提供堆叠组名称
  • 设置旋转角度
  • Set Inclination和IsRightAngleAxes

    这个工作正常...请注意我使用VS 2010 .. Asp.Net

Result Produced