当我在堆叠的库仑图中绑定多个系列的数据时,只有第一个系列是
用数据显示其他系列没有显示.i遍历系列并添加点
toseries动态,但问题仍然存在。我也设置isshowedaslabel
财产到真,但问题是没有,请帮助我
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");
}
}
答案 0 :(得分:0)
我建议使用DataBindCrossTable方法将数据绑定到堆积条/堆积柱形图。看看这里的例子:
该方法基本上对指定的列执行GROUP BY操作,并为该列中的每个不同值创建一个图表系列。
答案 1 :(得分: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;
}