【问题标题】:Chart for ASP.NET won't get displayed不会显示 ASP.NET 的图表
【发布时间】: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


【解决方案1】:

您的 web.config 似乎正确。不用将控件添加到占位符中,可以直接在页面中创建吗?

<asp:Chart ID="myChart" runat="server" ImageStorageMode="UseImageLocation" Width="800px" Height="400px" ImageLocation="~/someTempFolder/myChartImage"> <Series> <asp:Series Name="Serie1"></asp:Series> </Series> <ChartAreas> <asp:ChartArea Name="ChartArea1"></asp:ChartArea> </ChartAreas> </asp:Chart>

【讨论】:

  • 首先让我感谢您对我的帮助!不幸的是,仍然没有显示任何内容。如果我在 aspx 站点中手动添加点,则会显示图表,但是一旦我尝试使用帖子中的代码以编程方式设置点,即使像您说的那样直接在页面中创建图表,也不会显示任何内容.
  • 没问题。您可以尝试保存生成的图像,然后用常规的&lt;img/&gt; 标记显示它,而不是显示图表控件。不要将控件添加到占位符,而是:myChart.SaveImage(pathImg + "myGraph.jpg") 然后,在页面中:&lt;img src="myGraph.jpg"&gt; Protip:检查您是否有足够的权限在输出文件夹中写入。
  • 生成的图像只是一张 3 KB 的白色图片。它已正确保存在指定的文件夹中,但正如我所说,没有生成任何东西,只是一个白色背景。我真的不知道我的代码有什么问题。
  • 能否检查DataTable是否为空?
  • 我现在设法显示它。当我尝试使用DataSource = dt 执行此操作时,它不起作用并且保存的图片是白色的,但是当我使用For Each 执行此操作时,一切正常。我现在将按照您对&lt;img&gt; 所说的方式进行操作。非常感谢你的帮助! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-02
  • 1970-01-01
  • 2019-05-13
  • 1970-01-01
相关资源
最近更新 更多