2012-09-20 71 views
2

基本上我有一個datareader,理論上它會調用storedprocedure,並綁定返回到圖表的查詢。將數據讀取器綁定到asp圖表控件

這是我想綁定到一個圖表的數據:

ForecastDesc Previous Current Budget Forecast 4 Forecast 7 
Period1 966025.79 1466872.95 1000000.00 0.00 0.00 
Period2 1051175.09 1489785.15 1000000.00 0.00 0.00 
Period3 1205352.26 1552806.49 1000000.00 0.00 0.00 
Period4 1261483.84 1544562.06 1000000.00 50.00 0.00 
Period5 1298918.58 1681396.55 1000000.00 45.00 0.00 
Period6 1314396.68 1611695.58 10000000.00 50.50 0.00 
Period7 1465150.48 1622354.24 1000000.00 50.50 123.00 
Period8 1426084.73 1632609.46 1000000.00 50.50 0.00 
Period9 1395144.09 370334.88 1000000.00 50.50 0.00 
Period10 1347280.57 0.00 1000000.00 50.50 0.00 
Period11 1374741.53 0.00 1000000.00 50.50 0.00 
Period12 1331704.11 0.00 1000000.00 50.20 0.00 
Period13 1367272.27 0.00 1000000.00 50.70 0.00 

我的VB代碼如下:

Protected Sub YearList_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles YearList.SelectedIndexChanged 

    Chart1.Visible = True 

    mySqlConn = New SqlConnection 
    mySqlConn.ConnectionString = "Server=" + dbServerName + "; Database=" + dbCatalogName + "; Trusted_Connection=True;" 


    pSql = New SqlCommand 

    pSql.Connection = mySqlConn 
    pSql.CommandType = CommandType.StoredProcedure 
    pSql.CommandText = "dbo.[sp_DW_Transpose_BudgetForecast]" 


    pSql.Parameters.Add("@seg1", SqlDbType.NVarChar) 
    pSql.Parameters.Add("@seg2", SqlDbType.NVarChar) 
    pSql.Parameters.Add("@seg3", SqlDbType.NVarChar) 
    pSql.Parameters.Add("@year", SqlDbType.NVarChar) 

    pSql.Parameters("@seg1").Value = Seg1.SelectedItem.Text 
    pSql.Parameters("@seg2").Value = Seg2.SelectedItem.Text 
    pSql.Parameters("@seg3").Value = Seg3.SelectedItem.Text 
    pSql.Parameters("@year").Value = YearList.SelectedItem.Text 

    pSql.Connection.Open() 
    pReader = pSql.ExecuteReader(CommandBehavior.CloseConnection) 

    While pReader.Read() 
     Chart1.DataBindTable(pReader) 
    End While 

    pReader.Close() 
    pReader = Nothing 

    mySqlConn.Close() 



End Sub 

當我的Web程序獲取到這種地步它準備創建圖表我得到以下錯誤:

Server Error in '/' Application. 

Specified method is not supported. 

Description: An unhandled exception occurred during the execution of the current web   request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.NotSupportedException: Specified method is not supported. 

Source Error: 


Line 111: 
Line 112:  While pReader.Read() 
Line 113:   Chart1.DataBindTable(pReader) 
Line 114:  End While 
Line 115: 


Stack Trace: 


[NotSupportedException: Specified method is not supported.] 
System.Data.Common.DbEnumerator.Reset() +65 
System.Web.UI.DataVisualization.Charting.ChartImage.GetDataSourceMemberNames(Object  dataSource, Boolean usedForYValue) +2363 
System.Web.UI.DataVisualization.Charting.ChartImage.DataBindTable(IEnumerable dataSource, String xField) +59 
System.Web.UI.DataVisualization.Charting.Chart.DataBindTable(IEnumerable dataSource) +36 
Forecasting.WebForm1.YearList_SelectedIndexChanged(Object sender, EventArgs e) in 
System.Web.UI.WebControls.ListControl.OnSelectedIndexChanged(EventArgs e) +113 
System.Web.UI.WebControls.DropDownList.RaisePostDataChangedEvent() +143 
    System.Web.UI.WebControls.DropDownList.System.Web.UI.IPostBackDataHandler.RaisePostDataChangedEvent() +10 
System.Web.UI.Page.RaiseChangedEvents() +135 
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4867 

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1 

反正我不知道如果Databindtable是c orrect方法我應該使用或甚至Databindcrosstable。我一直盯着這個問題已經有四天了,現在正在呼籲您的專業知識,希望能夠指引我朝着正確的方向前進。

回答

0

我相信這個問題是您呼叫.DataBindTable()並傳遞DataReader,但DataReader的不實施IEnumerable,因此不被支持有關該方法的錯誤。嘗試將數據轉儲到DataTableDataSet並傳遞作爲參數傳遞給.DataBindTable()

Chart.DataBindTable Method

+0

我竟然想通了,我沒有必要在轉我的存儲過程我的數據。在我學習'databindtable()'之前,我開始轉換。一旦我把轉換出來,它會動態地顯示我的圖表,但不是我需要實現的方式。 –

相關問題