2009-09-15 2 views
0

세 개의 열이있는 테이블이 있고 두 개의 테이블에 값이 들어있는 테이블이 있습니다. 나는 각각에 대한 데이터를 표시하는 두 개의 파이 차트를 출력하려고합니다. 어떤 이유로 두 번째 원형 차트가 표시되지 않고 대신 회색 사각형으로 표시됩니다. 또한 전설은 연속적으로 두 번 나타나지만 나에게 의미가없는 유일한 전설입니다. 차트 컨트롤 여러 ChartArea의 동일한 테이블

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

가 그럼 난 데이터를 차트 계열을 바인딩 할 때 내가 그것을 사용할 수 있도록 DataSet 채우기 위해 사용되는 SqlDataAdapter, 나는 다음 IEnumerable 목록 유형에 DataTableCollection를 켜있어 :

다음은 마크 업입니다. 약간 털이 많은데, 내가 이것을하는 이유는 나중에 XSLT 출력에 DataSet이 사용 되었기 때문에 내가 필요로하는 데이터를 이미 가지고있을 때 데이터베이스를 다시 쿼리 할 필요가 없기 때문이다.

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)는 전혀 표시되지 않고 단지 회색 사각형입니다. 나는 아무 쓸데없이 시간을 들여 보았다. (편집 : 또한, 나는 이미 비슷한 일을했기 때문에 이것이 왜 작동하지 않는지 모르겠다. 다른 하나와의 차이점은 데이터가 처음에는 두 개의 분리 된 세트에서 나온 것이지만, 그렇게해서는 안된다는 것이다. 그 이유는 작동하지 않습니다)

고마워.

답변

1

좋아, 나는 바보 같은 아침을 보냈지 만, 나는 모든 문제를 해결했다. 결국이

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" 

있어 :

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

하고 데이터를 바인딩하는 대신이 같은 수행해야합니다 : 당신이 그렇게 같은 시리즈에 대한 범례를 지정해야하기 때문에 전설이 문제는 해결되었다 .