【发布时间】:2016-08-31 08:46:14
【问题描述】:
我正在使用 aspx 网站 (.NET 4.0) 中的集成图表控件,但无法显示它。这是我的代码(VB.NET):
Protected Sub CreateChart(ByVal dt As DataTable, ByVal KZ As DB_Kennzahl)
Dim chart As New Chart
chart.Height = Unit.Pixel(400)
chart.Width = Unit.Pixel(800)
Dim ca As New ChartArea
ca.Name = "ChartArea"
chart.ChartAreas.Add(ca)
Dim seriesKZ As New Series
seriesKZ.Name = KZ.Text
seriesKZ.ChartType = SeriesChartType.Column
seriesKZ.Color = Drawing.Color.Blue
chart.Series.Add(seriesKZ)
For Each dr As DataRow In dt.Rows
Dim dp As New DataPoint
dp.SetValueY(Convert.ToDecimal(dr.Item(6)))
dp.AxisLabel = CStr(dr.Item("Datum"))
seriesKZ.Points.Add(dp)
Next
chart.DataBind()
plch_Chart.Controls.Add(chart)
End Sub
如您所见,我正在使用表格来填充图表的数据。 图表被添加到一个简单的占位符中。
<asp:PlaceHolder ID="plch_Chart" runat="server" Visible="true"></asp:PlaceHolder>
我是不是忘了在代码中写些什么?我不知道出了什么问题。代码看起来是正确的,因为甚至不会抛出一个异常。
编辑:Web.config:(仅影响图表的部分)
<handlers>
<remove name="ChartImageHandler" />
<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST"
path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</handlers>
<add key="ChartImageHandler" value="storage=file;timeout=20;Url=~\TempImageFiles\;" />
<httpHandlers>
<add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
validate="false" />
</httpHandlers>
<controls>
<add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting"
assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</controls>
【问题讨论】:
-
您不需要使用 SetValueXY 而不是 SetValueY 来设置 DataPoints 的 X 值吗?
-
不,X 值不是“必须的”。 SetValueY 就足够了。
-
对不起,如果我看起来很无知,我只将这种图表与数据源一起使用;但是真的需要打电话给
chart.DataBind()吗? MSDN 说,当数据必须绑定到数据源时,您应该调用它,而代码中的情况并非如此,因为您逐个添加点;因此,如果数据源为空,此方法可以清除数据。 -
即使
chart.DataBind()发表评论,图表也不会显示。我什至尝试使用chart.DataSource = dt,然后像 MSDN 所说的那样使用DataBind(),但仍然没有显示任何内容。我的 web.config 也可能是一个问题,但我没有看到任何错误代码。我编辑了帖子,所以你也可以看到我的 web.config。
标签: c# asp.net vb.net winforms charts