2016-08-31 2 views
1

Я использую интегрированный элемент управления диаграммы на aspx-сайте (.NET 4.0), и я не могу его отобразить. Вот мой код (VB.NET):Диаграмма для ASP.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> 

Я что-то забыл написать в коде? Я не могу понять, что случилось. Код кажется правильным, потому что не будет выбрано ни одного исключения.

EDIT: 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> 
+0

Вам не нужно, чтобы установить значение X для точек данных с помощью SetValueXY вместо SetValueY? – gobes

+0

Нет, значение X не является обязательным. SetValueY достаточно. –

+0

Извините, если я кажусь невежественным, я использую только этот вид диаграммы с источником данных; но вызов 'chart.DataBind()' действительно нужен? MSDN говорит, что вы должны вызывать его, когда данные должны быть привязаны к источнику данных, и это не относится к вашему коду при добавлении точек один за другим; поэтому этот метод может очистить данные, если источник данных пуст. – gobes

ответ

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>

+0

Прежде всего позвольте мне сказать спасибо за то, что помогли мне так много! К сожалению, пока ничего не отображается. Если я добавлю точки вручную на aspx-сайте, диаграмма будет отображаться, но как только я попытаюсь установить точки программным образом с кодом в сообщении, ничего не получится, даже создав диаграмму непосредственно на странице, как вы сказали , –

+0

Нет проблем. Вместо того, чтобы показывать элемент управления диаграммой, вы можете попытаться сохранить сгенерированное изображение, а затем отобразить его с помощью регулярного знака ''. Вместо добавления элемента управления в заполнителе, сделайте следующее: 'myChart.SaveImage (pathImg + "myGraph.jpg")' Затем на странице: '' Protip: проверить, если у вас есть достаточные права на запись в выходной папке. – gobes

+0

Сгенерированное изображение представляет собой просто белое изображение с 3 КБ. Он правильно сохраняется в указанной папке, но, как я уже сказал, ничего не генерируется, просто на белом фоне. Я действительно не знаю, что не так с моим кодом. –

Смежные вопросы