2016-08-31 19 views
1

aspx-website(.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

あなたがSetValueXY代わりのSetValueYを使用してデータポイントのためのX値を設定する必要はありませんか? – gobes

+0

いいえ、X値は「必須」ではありません。 SetValueYで十分です。 –

+0

申し訳ありませんが無知なように見えますが、この種のグラフはデータソースでのみ使用します。 'chart.DataBind()'の呼び出しは本当に必要ですか? MSDNでは、データをデータソースにバインドする必要があるときに呼び出す必要があり、ポイントを1つずつ追加するときにはコードには当てはまりません。このメソッドは、データソースが空の場合にデータを消去することができます。 – 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の白い画像に過ぎません。指定されたフォルダに正しく保存されていますが、私が言ったように、何も生成されず、白い背景になります。私は本当に自分のコードに何が間違っているのか分かりません。 –

関連する問題