Используя следующую таблицу в качестве примера:
TimeStamp ValueA ValueB Name
5/1/2011 12:00:00 100 150 Item1
5/1/2011 12:00:00 101 151 Item2
5/1/2011 12:10:00 110 160 Item1
5/1/2011 12:10:00 111 151 Item2
5/1/2011 12:20:00 102 170 Item1
5/1/2011 12:00:00 112 171 Item2
У меня есть древовидная структура с Item1 и Item2 в качестве узлов с ValueA и ValueB, выбираемыми для каждого:
Item1
-ValueA
-ValueB
Item2
-ValueA
-ValueB
Когда пользовательвыбирает ValueA или ValueB, его следует добавить как серию и отобразить на графике.
Данные отображаются правильно, но только для последнего проверенного элемента X.Если вы отметите Item1-> ValueA, а затем Item2-> ValueA в древовидном представлении, то при обновлении диаграммы с помощью кода ниже серии будет отображаться только ValueA для Item2
SqlDataSource sqlDataSource = new SqlDataSource();
sqlDataSource.ID = "SQLDataSourceChart";
foreach (TreeNode node in TagTreeView.CheckedNodes)
{
// Add a series to the chart
Series series = Chart1.Series.Add("Series" + node.Value);
series.ChartArea= "ChartArea1";
series.ChartType = (SeriesChartType)Enum.Parse(typeof(SeriesChartType), charts[1], true);
sqlDataSource.ConnectionString = ConfigurationManager.ConnectionStrings["HistoricalDataConnectionString"].ConnectionString;
if (node.Depth > 1)
{
sqlDataSource.SelectCommand = @"SELECT "+ node.Value + " [ExampleTable] WHERE [Name] = '" + node.Parent.Text + "' ORDER BY TimeStamp";
this.Page.Controls.Add(sqlDataSource);
Chart1.DataSourceID = "SQLDataSourceChart";
Chart1.Series["Series" + node.Value].XValueMember = "TimeStamp";
Chart1.Series["Series" + node.Value].YValueMembers = node.Value;
}
}
Chart1.DataBind();
. Мне кажется, я не совсем понимаю, каксерия добавляется в график.Мое исходное предположение заключалось в том, что ряды добавляются в диаграмму с именем, основанным на узле. Значение, когда цикл foreach обрабатывается, давая список рядов, которые затем добавляются в диаграмму в привязке данных.
ЧтоПохоже, что происходит из-за того, что все серии основаны на легенде, и на диаграмме видны только данные для последнего выбранного элемента в виде дерева.
В конце концов я хочу, чтобыПользователь может выбрать любую комбинацию ValueA и ValueB для Item1 или Item2 и отобразить соответствующее число серий на диаграмме.Возможно ли это, и если да, то какая часть моего подхода неверна?
Основываясь на дальнейшем рассмотрении, я думаю, что причина, по которой я получаю ошибки, когда ValueA выбран для Item1 и ValueB для Item2, и причина, по которой результатытолько для последнего выбранного элемента возвращается то, что sqlDataSource.SelectCommand имеет последнее значение, которое было установлено в цикле foreach, которое будет для последнего выбранного элемента.
Есть ли способ связать sqlDataSource с конкретнымили около того серии предоставляют отдельный запрос для каждой серии, чтобы при привязке данных к диаграмме каждая серия видела правильный запрос?