0

当我在堆积柱状图中将数据与多个系列绑定时,仅显示第一个系列,
而其他系列未显示数据。我遍历系列并动态添加点到系列,但问题仍然存在。我还将 isshowedaslabel
属性设置为 true 但问题不解决请帮助我。

asp 代码:

                 XValueMember="qno"   YValueMembers="option3" ></asp:Series>
                        <asp:Series Name="Series2" ChartType="StackedColumn"   

                   XValueMember="description" YValueMembers="option3"></asp:Series>
                            <asp:Series Name="Series3" ChartType="StackedColumn" 

                      XValueMember="option1" YValueMembers="option3"></asp:Series>
                                <asp:Series Name="Series4" ChartType="StackedColumn"  

                   XValueMember="description" YValueMembers="option3">   
                    </asp:Series>
                </Series

>





            <ChartAreas>
                <asp:ChartArea Name="ChartArea1">
                </asp:ChartArea>
            </ChartAreas>
        </asp:Chart>


    **.aspx.cs**
     assessdal d = new assessdal();
            SqlConnection con = dbconnect.GetConnection();

            SqlCommand cmd = new SqlCommand("select assessid, qno ,description,    
           option1,option2,option3,option4 from assessmenttest", con);
            SqlDataReader reder = cmd.ExecuteReader();








                Chart2.DataSource = d.showop1();

                Chart2.DataBind();



                Chart2.Series["Series1"].IsValueShownAsLabel = true;


                Chart2.Series["Series2"].IsValueShownAsLabel = true;
                Chart2.Series["Series3"].IsValueShownAsLabel = true;
                Chart2.Series["Series4"].IsValueShownAsLabel = true;
                while (reder.Read())
                {
                    if (reder.HasRows)
                    {

                        //Chart2.Series["Series1"].Points.DataBindY(reder, "option3");
                        //Chart2.Series["Series2"].Points.DataBindY(reder, "option3");
                        //Chart2.Series["Series3"].Points.DataBindY(reder, "option3");
                        //Chart2.Series["Series4"].Points.DataBindY(reder, "option3");
                    }
                    foreach (Series s in Chart2.Series)
                    {
                        s.Points.DataBindY(reder,"option3");
                    }




                }
4

2 回答 2

0

我建议改用 DataBindCrossTable 方法将数据绑定到堆积条形图/堆积柱形图。看看这里的例子:

http://blogs.msdn.com/b/saveenr/archive/2012/01/25/microsoft-chart-controls-using-databindcrosstable-method-for-dynamic-series.aspx

该方法基本上对指定的列执行 GROUP BY 操作,并为该列中的每个不同值创建一个图表系列。

于 2012-09-21T00:45:42.833 回答
0

@kad81 引用的示例已移动,它没有解决图表类型。以我的经验DataBindCrossTable默认为柱形图。

这是示例中的相关代码片段,另外我在底部添加了循环来处理堆积柱形图样式。

// Setup the data
var dt = new System.Data.DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("BugCount", typeof(int));
dt.Columns.Add("Day", typeof(int));
dt.Rows.Add("Kim", 10, 0);
dt.Rows.Add("Kim", 12, 1);
dt.Rows.Add("Kim", 18, 2);
dt.Rows.Add("Kim", 5, 3);
dt.Rows.Add("Philby", 18, 0);
dt.Rows.Add("Philby", 25, 1);
dt.Rows.Add("Philby", 9, 2);
dt.Rows.Add("Philby", 32, 3);

// Build the chart
this.chart1.Series.Clear();
this.chart1.DataBindCrossTable(dt.Rows, "Name", "Day", "BugCount", "");

foreach (Series s in this.chart1.Series)
{
    s.ChartType=SeriesChartType.StackedColumn;
}
于 2014-10-31T19:06:20.807 回答