2016-08-31 9 views
1

aspx-website (.NET 4.0)에서 통합 차트 컨트롤을 사용하고 있는데이를 표시 할 수 없습니다.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 

당신은 내가 차트의 데이터를 채우기 위해 테이블을 사용하고 볼 수 있듯이 : 여기 내 코드 (VB.NET)가있다. 차트가 간단한 자리 표시 자에 추가됩니다.

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

당신은 SetValueXY를 사용하는 대신 SetValueY하여 데이터 포인트의 X 값을 설정할 필요가 없습니다? – 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

생성 된 이미지는 3KB의 흰색 그림입니다. 그것은 지정된 폴더에 제대로 저장되고 있지만, 내가 말했듯이 아무것도 생성되지 않고 단지 흰색 배경입니다. 나는 정말로 내 코드에 어떤 문제가 있는지 알지 못한다. –

관련 문제