Frage

Ich habe mit drei Spalten einer Tabelle erhalten, die beiden letzteren mit Werten in ihnen. Ich versuche, die Ausgabe zwei Kreisdiagramme, die Daten für jede Anzeige. Aus irgendeinem Grunde wird die zweite Kreisdiagramm nicht angezeigt, stattdessen wird es kommt als graues Quadrat auf. Zusätzlich wird die Legende wird zweimal hintereinander erscheinen, aber es ist nur eine einzige Legende, die mir keinen Sinn macht.

Hier ist das Markup:

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

Dann habe ich eine SqlDataAdapter bekommt verwendet, um eine DataSet zu füllen, ich drehe dann die DataTableCollection in eine IEnumerable Listentyp, so kann ich es verwenden, wenn Daten, die die Kartenserie verbindlich. Es scheint ein bisschen haarig, aber der Grund, warum ich dies tun, ist, weil die DataSet für einige XSLT-Ausgabe auf später verwendet wird, so gibt es keinen Grund zur Wieder Abfrage der Datenbank, wenn ich bereits die Daten, was ich brauche / wollen.

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)

So die zweite Kreisdiagramm (ModelActual) ist überhaupt nicht angezeigt wird, ist es nur ein graues Quadrat. Ich habe mit vergebens stundenlang das Hantieren. (EDIT:. Außerdem habe ich schon etwas getan ähnlich, damit ich weiß nicht, warum dies nicht funktioniert Der Unterschied zu meinen andere ist, dass es aus zwei getrennten Sätzen von Daten kommt zunächst, aber das sollte nicht sein der Grund, warum es nicht funktioniert)

Danke.

War es hilfreich?

Lösung

Okay, verbrachte ich den Morgen auf sie dummerweise, aber ich alle Probleme gelöst. Das Problem mit der Legende gelöst wurde, weil Sie die Legende gegen die Serie angeben müssen etwa so:

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

und Bindung der Daten sollen wie folgt stattdessen getan werden:

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"

Haben Sie es am Ende.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top