我的页面有一个图表,用于显示来自SqlDataSource的数据。ASP.NET通过treeview选项添加多个系列到图表
有一个TreeView,其中包含一个数据点列表,我希望能够将其添加到图表中作为不同系列。用户通过单击该节点的树形视图中的复选框来选择他们希望添加的项目,然后单击更新按钮来刷新图表。
将每个节点的值设置为表中的列名称。
如果在树状视图上只选择了一个点,则在单击更新按钮时,数据会在图表上以系列的形式出现,而没有任何问题。
如果选中树状视图中的多个项目,则单击该按钮时会出现一个ASP.NET错误页面,指出未找到列名'XXXX',其中'XXXX'是节点。树中最高项目的值这是检查。
例如一个错误说“与名字‘X1’未找到列”将使用以下选择时显示:如果只是“X1”被选中
的数据显示,高达在图表上。
public void UpdateChart(Object sender, EventArgs e)
{
if (TagTreeView.CheckedNodes.Count > 0)
{
foreach (TreeNode node in TagTreeView.CheckedNodes)
{
// Add a series to the chart
Series series = new Series();
series=Chart1.Series.Add("Series"+node.Value);
series.ChartArea = "ChartArea1";
series.ChartType = (SeriesChartType)Enum.Parse(typeof(SeriesChartType), charts[1], true);
// create a datasource, add it to the page,
SqlDataSource sqlDataSource = new SqlDataSource();
sqlDataSource.ID = "SQLDataSource"+node.Value;
sqlDataSource.ConnectionString = ConfigurationManager.ConnectionStrings["HistoricalDataConnectionString"].ConnectionString;
if (node.Depth > 1)
{
if (node.Parent.Text.Contains("AAA"))
{
MessageBox.Show(node.Value);
sqlDataSource.SelectCommand = "SELECT (Date + CONVERT(datetime,Time)) As TimeStamp, " + node.Value + " FROM AAA ORDER BY TimeStamp";
}
this.Page.Controls.Add(sqlDataSource);
Chart1.DataSourceID = "SQLDataSource"+node.Value;
Chart1.Series["Series" + node.Value].XValueMember = "TimeStamp";
Chart1.Series["Series" + node.Value].YValueMembers = node.Value;
Chart1.DataBind();
}
}
}
}
有没有办法拿在TreeView每个选定的项目,然后用node.value构建查询到额外的系列添加到图表?我已经做了一些工作,看看是否将SqlDatasource和Series对象放入一个数组并循环遍历,但它似乎并没有带我到任何地方。