0

3つの列を持つテーブルがあり、後者の2つには値が含まれています。それぞれのデータを表示する2つの円グラフを出力しようとしています。何らかの理由で、2番目の円グラフが表示されず、代わりに灰色の正方形として表示されます。さらに、凡例は2回連続して表示されますが、これは1つの凡例にすぎず、私には意味がありません。

マークアップは次のとおりです。

<asp:Chart Height="500" Width="500" ID="ClientModelChart" runat="server">
    <Series>
       <asp:Series ChartType="Pie" IsValueShownAsLabel="true" Name="PortfolioActual"></asp:Series>
       <asp:Series ChartType="Pie" IsValueShownAsLabel="true" Name="ModelActual"></asp:Series>
    </Series>
    <Legends>
       <asp:Legend Name="PortfolioActual"></asp:Legend>
       <asp:Legend Name="ModelActual"></asp:Legend>
    </Legends>
    <ChartAreas>
       <asp:ChartArea Area3DStyle-Enable3D="true" Area3DStyle-LightStyle="Realistic" Name="PortfolioActual"></asp:ChartArea>
       <asp:ChartArea Area3DStyle-Enable3D="true" Name="ModelActual"></asp:ChartArea>
    </ChartAreas>
</asp:Chart>

次に、を入力するためにSqlDataAdapter使用します。DataSet次に、DataTableCollectionIEnumerableリストタイプに変換して、チャートシリーズをデータバインディングするときに使用できるようにします。少し厄介なようですが、これを行う理由は、DataSet後でXSLT出力に使用されるためです。したがって、必要なデータが既にある場合は、データベースを再クエリしても意味がありません。

Dim sectorList As IList = CType(ds.Tables(1), IListSource).GetList()

ClientModelChart.Series("PortfolioActual").Points.DataBind(sectorList, "Sector", "Model", Nothing)
ClientModelChart.Series("ModelActual").Points.DataBind(sectorList, "Sector", "Client", Nothing)

したがって、2番目の円グラフ(ModelActual)はまったく表示されず、灰色の正方形にすぎません。私は何時間も無駄にいじっています。(編集:また、私はすでに似たようなことをしたので、なぜこれが機能しないのかわかりません。他のものとの違いは、最初は2つの別々のデータセットからのものでしたが、そうではないはずです。それが機能しない理由)

ありがとう。

4

1 に答える 1

1

わかりました、私は愚かなことに朝を過ごしましたが、すべての問題を解決しました。次のようにシリーズに対して凡例を指定する必要があるため、凡例の問題は解決されました。

      <asp:Chart Height="500" Width="500" ID="ClientModelChart" runat="server">
        <Legends>
          <asp:Legend Name="PortfolioActual"></asp:Legend>
          <asp:Legend Enabled="false" Name="ModelActual"></asp:Legend>
        </Legends>
        <Series>
          <asp:Series ChartType="Pie" Legend="PortfolioActual" ChartArea="PortfolioActual" IsValueShownAsLabel="true" Name="PortfolioActual"></asp:Series>
          <asp:Series ChartType="Pie" Legend="ModelActual" ChartArea="ModelActual" IsValueShownAsLabel="true" Name="ModelActual"></asp:Series>
        </Series>
        <ChartAreas>
          <asp:ChartArea Area3DStyle-Enable3D="true" Area3DStyle-LightStyle="Realistic" Name="PortfolioActual"></asp:ChartArea>
          <asp:ChartArea Area3DStyle-Enable3D="true" Area3DStyle-LightStyle="Realistic" Name="ModelActual"></asp:ChartArea>
        </ChartAreas>
      </asp:Chart>

データのバインドは、代わりに次のように行う必要があります。

Dim sectorList As IList = CType(ds.Tables(1), IListSource).GetList()

ClientModelChart.Series("PortfolioActual").Points.DataBindXY(sectorList, "Sector", sectorList, "Model")
ClientModelChart.Series("ModelActual").Points.DataBindXY(sectorList, "Sector", sectorList, "Client")
ClientModelChart.Series("PortfolioActual")("PieLabelStyle") = "Outside"
ClientModelChart.Series("ModelActual")("PieLabelStyle") = "Outside"

結局そこにたどり着きました。

于 2009-09-15T10:34:54.757 に答える