ASP.NET добавить несколько графиков в диаграмму с помощью выбора в виде дерева - PullRequest
0 голосов
/ 02 июня 2011

На моей странице есть диаграмма, настроенная для отображения данных, поступающих из SqlDataSource.

Существует 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 для построения запроса для добавления дополнительной серии в chИзобразительное искусство?Я проделал небольшую работу, чтобы увидеть, помещает ли объекты SqlDatasource и Series в массив и проходит через них, но, похоже, это никуда меня не приведет.

1 Ответ

0 голосов
/ 02 июня 2011

Для правильной работы все точки данных, которые будут добавлены в диаграмму, должны быть включены в оператор выбора для sqlDataSource:

sqlDataSource.SelectCommand = "SELECT (Date + CONVERT(datetime,Time)) As TimeStamp, X1, X2, X3 FROM AAA ORDER BY TimeStamp";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...