基本上我有一个datareader理论上会调用storedprocedure,并绑定返回到图表的查询。
这是我想要绑定到图表的数据:
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
当我的网络程序到达准备创建图表的程度时,我收到以下错误:
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是否是我应该使用的正确方法,甚至可能是Databindcrosstable。我一直在盯着这个问题四天,并且正在呼吁你的专业知识,希望现在能指导我正确的方向。
答案 0 :(得分:0)
我认为问题是您正在调用.DataBindTable()
并传入DataReader
,但DataReader执行而不是实现IEnumerable
,因此有关方法的错误没有得到支持。尝试将数据转储到DataTable
或DataSet
,并将其作为参数传递给.DataBindTable()