Pregunta

Tengo una tabla con tres columnas, las dos últimas con valores en ellas. Estoy tratando de generar dos gráficos circulares que muestren los datos de cada uno. Por alguna razón, el segundo gráfico circular no se muestra, sino que aparece como un cuadrado gris. Además, la leyenda aparece dos veces consecutivas, pero es solo una leyenda que no tiene sentido para mí.

Aquí está el marcado:

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

Luego tengo un SqlDataAdapter utilizado para llenar un DataSet , luego convierto el DataTableCollection en un IEnumerable tipo de lista para que pueda usarlo cuando los datos enlacen la serie de gráficos. Parece un poco complicado, pero la razón por la que hago esto es porque el DataSet se usa para alguna salida XSLT más adelante, por lo que no tiene sentido volver a consultar la base de datos cuando ya tengo los datos. necesita / quiere.

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)

Entonces, el segundo gráfico circular (ModelActual) no se muestra en absoluto, es solo un cuadrado gris. He estado jugando durante horas sin resultado. (EDITAR: Además, ya he hecho algo similar, así que no sé por qué este no funciona. La diferencia con mi otro es que inicialmente provino de dos conjuntos de datos separados, pero eso no debería ser la razón por la que no funciona)

Gracias.

¿Fue útil?

Solución

Bien, pasé la mañana estúpidamente, pero resolví todos los problemas. El problema con la leyenda se resolvió porque necesita especificar la leyenda contra la serie de la siguiente manera:

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

y la vinculación de los datos debe hacerse así:

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"

Llegué al final.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top