0

積み上げ列グラフでデータを複数のシリーズにバインドすると、最初のシリーズのみが
表示され、他のシリーズは表示されません。シリーズを繰り返し、シリーズにポイントを動的に追加しますが、問題はまだ存在します。isshowedaslabel
プロパティも true に設定しましたが、問題は解決していません。助けてください。

aspx コード:

                 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 に答える