Question

J'ai un tableau avec trois colonnes, les deux dernières avec des valeurs. J'essaie de produire deux graphiques à secteurs affichant les données pour chacun. Pour une raison quelconque, le second graphique à secteurs ne s'affiche pas, il apparaît plutôt sous la forme d'un carré gris. De plus, la légende apparaît deux fois de suite, mais ce n’est pour moi qu’une légende qui n’a aucun sens.

Voici le balisage:

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

Ensuite, j'ai un SqlDataAdapter utilisé pour remplir un DataSet , puis je tourne le DataTableCollection en un IEnumerable type de liste afin que je puisse l'utiliser lorsque des données lient la série de graphiques. Cela semble un peu poilu, mais la raison pour cela est que le DataSet est utilisé ultérieurement pour certaines sorties XSLT, il est donc inutile de réinterroger la base de données alors que j'ai déjà les données I besoin / envie.

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)

Le second graphique à secteurs (ModelActual) ne s'affiche donc pas, il s'agit simplement d'un carré gris. Je tripote des heures sans succès. (EDIT: De plus, j’ai déjà fait quelque chose de similaire, donc je ne sais pas pourquoi celui-ci ne fonctionne pas. La différence avec mon autre, c’est qu’il provenait initialement de deux ensembles de données distincts, mais cela ne devrait pas être le cas. la raison pour laquelle cela ne fonctionne pas)

Merci.

Était-ce utile?

La solution

D'accord, j'ai passé la matinée dessus bêtement, mais j'ai résolu tous les problèmes. Le problème avec la légende a été résolu car vous devez spécifier la légende par rapport à la série, comme suit:

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

et la liaison des données doit se faire comme suit:

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"

Arrivé à la fin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top