2011-06-01 56 views
0

我的頁面有一個圖表,用於顯示來自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對象放入一個數組並循環遍歷,但它似乎並沒有帶我到任何地方。

回答

0

爲了得到這個能夠正常運行所有將要添加到圖表數據點需要被包含在該SqlDataSource的select語句:

sqlDataSource.SelectCommand = "SELECT (Date + CONVERT(datetime,Time)) As TimeStamp, X1, X2, X3 FROM AAA ORDER BY TimeStamp"; 
相關問題