문제

나는 세 개의 열이있는 테이블을 가지고 있었고, 후자는 그 값이있는 테이블을 가지고 있습니다. 나는 각각의 데이터에 대한 데이터를 표시하는 두 개의 파이 차트를 출력하려고합니다. 어떤 이유로 든 두 번째 파이 차트는 표시되지 않고 대신 회색 정사각형으로 나타납니다. 또한 전설은 두 번 연속적으로 보이지만 나에게는 말이되지 않는 단일 전설 일뿐입니다.

마크 업은 다음과 같습니다.

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

따라서 두 번째 파이 차트 (Modelactual)는 전혀 표시되지 않으며 회색 정사각형 일뿐입니다. 나는 소용이 없으면 몇 시간 동안 피고를 겪고 있습니다. (편집 : 또한, 나는 이미 비슷한 일을 해냈으므로 왜 이것이 작동하지 않는지 모르겠습니다. 다른 하나와의 차이점은 처음에는 두 개의 별도 데이터 세트에서 나왔지만 그렇지 않아서는 안됩니다. 작동하지 않는 이유)

감사.

도움이 되었습니까?

해결책

좋아, 나는 아침을 어리석게 보냈지 만 모든 문제를 해결했다. 전설의 문제는 다음과 같은 시리즈에 대한 범례를 지정해야하기 때문에 해결되었습니다.

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

결국 거기에 도착했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top