ASP.NET通过树状视图选择向图表添加多个系列
我的页面有一个图表,用于显示来自SqlDataSource的数据 有一个树视图,其中包含一个数据点列表,我希望能够将这些数据点作为不同的系列添加到图表中。用户通过单击树视图中该节点的复选框选择要添加的项目,然后单击更新按钮刷新图表ASP.NET通过树状视图选择向图表添加多个系列,asp.net,sql,treeview,charts,Asp.net,Sql,Treeview,Charts,我的页面有一个图表,用于显示来自SqlDataSource的数据 有一个树视图,其中包含一个数据点列表,我希望能够将这些数据点作为不同的系列添加到图表中。用户通过单击树视图中该节点的复选框选择要添加的项目,然后单击更新按钮刷新图表 public void UpdateChart(Object sender, EventArgs e) { if (TagTreeView.CheckedNodes.Count > 0) { fo
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中选择了多个项目,则单击按钮时会显示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();
}
}
}
}
是否有方法获取树视图中的每个选定项,并使用node.value构建查询,以向图表中添加其他系列?我已经做了一些工作,看看是否将SqlDatasource和Series对象放入一个数组中并在其中循环,但这似乎并没有把我带到任何地方。要使其正常工作,将添加到图表中的所有数据点都需要包含在SqlDatasource的select语句中:
sqlDataSource.SelectCommand = "SELECT (Date + CONVERT(datetime,Time)) As TimeStamp, X1, X2, X3 FROM AAA ORDER BY TimeStamp";