部门1:优秀10人,良好20人,及格30人,不及格40人
部门2:优秀20人,良好30人,及格40人,不及格50人
部门3:优秀30人,良好40人,及格50人,不及格60人需要实现1张饼图,里面有3个饼分别是3个部门,效果有点类似Dundas Chart for ASP.NET - Enterprise Eval (VS2005)的示例中
Gallery->Chart Types->Pie and Doughnut Charts->Gallery中的图3D Stair-Stacked Pie
但3个饼是横向或纵向排列,而不是重叠在一起

解决方案 »

  1.   

    如果没有合适的办法就只好弄个DataList,再嵌个Chart,逐个绑定了
      

  2.   

    在一个Chart对象里面可以包含多个ChartArea,每个ChartArea可以绘制一个独立的图形。
      

  3.   

    而且Legend中显示的也是所有ChartArea中的Series的point的集合(即"优秀,良好,及格,不及格" * N)
      

  4.   

    实现效果如下部门1        部门2  ..............部门N
    饼图1        饼图2  ..............饼图N
          优秀 良好 及格 不及格(Legend)
      

  5.   

    <DCWC:Chart ID="Chart1" runat="server" Width="800px" Height="600px">
                <Legends>
                    <DCWC:Legend Name="Default">
                    </DCWC:Legend>
                </Legends>
                <Titles>
                    <DCWC:Title Name="Title1" Text="AAA" DockToChartArea="Area1">
                    </DCWC:Title>
                   <DCWC:Title Name="Title2" Text="BBB" DockToChartArea="Area2">
                    </DCWC:Title> 
                </Titles>
                <Series>
                    <DCWC:Series XValueType="String" Name="Series1" CustomAttributes="PieLabelStyle=Outside"
                        ChartArea="Area1" YValueType="Double" ShowLabelAsValue="True" ChartType="Pie" LabelFormat="P2"
                        BorderColor="180, 26, 59, 105" Legend="Default">
                    </DCWC:Series>
                   <DCWC:Series XValueType="String" Name="Series2" CustomAttributes="PieLabelStyle=Outside"
                        ChartArea="Area2" YValueType="Double" ShowLabelAsValue="True" ChartType="Pie" LabelFormat="P2"
                        BorderColor="180, 26, 59, 105" Legend="Default">
                    </DCWC:Series> 
                </Series>
                <ChartAreas>
                    <DCWC:ChartArea Name="Area1">
                    </DCWC:ChartArea>
                   <DCWC:ChartArea Name="Area2">
                    </DCWC:ChartArea> 
                </ChartAreas> double[] yValues0 = { 10.62, 30.54, 45.45, 76.73, 89.42 };
            double[] yValues1 = { 64.62, 74.54, 64.45, 31.73, 81.42 };
            string[] xValues = { "France", "Canada", "Germany", "USA", "Italy" };        for (int i = 0 ; i < xValues.Length ; i ++)
            {
                DataPoint dp = new DataPoint();
                object[] objArr = new object[2];
                objArr[1] = yValues0[i];
                objArr[0] = yValues1[i];
                dp.SetValueXY(xValues[i], objArr);
                this.Chart1.Series[0].Points.Add(dp);
                this.Chart1.Series[1].Points.Add(dp);
            }