【问题标题】:Chart Control Multiple ChartArea's, Same Table图表控制多个 ChartArea 的,同一张表
【发布时间】:2009-09-15 18:34:54
【问题描述】:

我有一个包含三列的表,后两列包含值。我正在尝试输出两个饼图,显示每个饼图的数据。出于某种原因,第二个饼图没有显示,而是显示为灰色方块。此外,该图例连续出现两次,但这只是一个对我来说没有意义的图例。

这是标记:

<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,然后我将DataTableCollection 转换为IEnumerable 列表类型,以便在数据绑定图表系列时使用它。看起来有点麻烦,但我这样做的原因是因为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) 根本没有显示,它只是一个灰色方块。我一直在摆弄几个小时无济于事。 (编辑:另外,我已经做了类似的事情,所以我不知道为什么这个不起作用。与我的另一个不同之处在于它最初来自两组不同的数据,但这不应该是它不起作用的原因)

谢谢。

【问题讨论】:

    标签: charts asp.net-charts


    【解决方案1】:

    好吧,我愚蠢地花了一个上午,但我解决了所有问题。图例的问题已解决,因为您需要像这样针对系列指定图例:

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

    终于到了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-18
      • 2014-07-11
      • 2013-06-03
      相关资源
      最近更新 更多