Pergunta

Eu tenho uma tabela com três colunas, os dois últimos com valores neles. Estou tentando saída de dois gráficos de pizza exibindo os dados de cada um. Por alguma razão, o segundo gráfico de pizza não está exibindo, em vez disso, está chegando como um quadrado cinza. Além disso, a lenda está aparecendo duas vezes consecutivamente, mas é apenas uma única lenda que não faz sentido para mim.

Aqui está a marcação:

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

Então eu tenho um SqlDataAdapter usado para preencher uma DataSet, eu, em seguida, virar a DataTableCollection em um tipo de lista IEnumerable para que eu possa usá-lo quando a ligação de dados a série do gráfico. Parece um peludo pouco, mas a razão de eu fazer isso é porque o DataSet é usado para alguma saída XSLT mais tarde, por isso não há ponto de re-consultando o banco de dados quando eu já tenho a necessidade de dados I / querem.

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)

Assim, o segundo gráfico de pizza (ModelActual) não está exibindo nada, é apenas um quadrado cinza. Eu fui brincar por horas com sem sucesso. (EDIT: Além disso, tenho feito algo semelhante, então eu não sei por que este não está funcionando A diferença com o meu outro é que ela veio de dois conjuntos separados de dados inicialmente, mas que não deve ser. a razão que não funciona)

Graças.

Foi útil?

Solução

Ok, eu passei a manhã sobre ele estupidamente, mas eu resolver todos os problemas. O problema com a lenda foi resolvido porque você precisa especificar a lenda contra a série assim:

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

e ligação de dados deve ser feito como este em vez disso:

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"

Got lá no final.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top