【问题标题】:Legend Items appearing n times more than the number of items in Series in ASP.Net Pie Chart using MS Chart Control使用 MS 图表控件在 ASP.Net 饼图中出现的图例项比系列中的项数多 n 倍
【发布时间】:2015-01-16 08:31:39
【问题描述】:

我正在使用 VB.Net 在 ASP.Net 中使用 MS Chart Control。图表类型为饼图。我面临一个奇怪的问题,图例中显示的项目数是当前系列数的平方。这意味着如果我在饼图中添加了 2 个系列,则在图例中显示 4 个项目,如果我在饼图中添加了 7 个系列,则在图例中显示 49 个项目。第 1 组 7 个项目显示正确数据,其他仅显示 0。

这是我在 ASPX 中的图表控件的标记 -

 <asp:Chart runat="server" ID="chartX" CssClass="chart" Width="420px" Height="500px" ImageType="Jpeg">
    <Series></Series>
    <ChartAreas>
        <asp:ChartArea Name="ChartArea1"></asp:ChartArea>
    </ChartAreas>
    <Legends>
        <asp:Legend Docking="Bottom" Alignment="Center" Font="Calibri"></asp:Legend>
    </Legends>
 </asp:Chart>

这是在 ASPX.vb 中填充图表控件的代码 -

Dim table As DataTable = PopulateData()
Dim dv As DataView = New DataView(table, "Count > 0", "", DataViewRowState.OriginalRows)

For Each r As DataRow In dv.ToTable().Rows

            Dim series As String = r("Name").ToString()
            chartX.Series.Add(series)
            chartX.Series(series).ChartType = DataVisualization.Charting.SeriesChartType.Pie
            chartX.Series(series).XValueMember = "Name"
            chartX.Series(series).YValueMembers = "Count"
            chartX.ChartAreas(0).Area3DStyle.Enable3D = True
            chartX.Series(series).Label = "#VALX" & Environment.NewLine & "(#PERCENT)"
            chartX.Series(series)("PieLabelStyle") = "Disabled"
    Next
    chartX.DataSource = dv
    chartX.DataBind()

希望得到任何答案。

【问题讨论】:

    标签: asp.net vb.net charts pie-chart mschart


    【解决方案1】:

    如果我没记错的话,您正在为表中的每一行添加一个新系列。相反,您应该为表添加一次系列,然后绑定您的数据。

    在设置图表时,您不需要遍历所有行。只绑定到表一次。我从来没有接触过VB,但它应该看起来像这样

    Dim table As DataTable = PopulateData()
    Dim dv As DataView = New DataView(table, "Count > 0", "", DataViewRowState.OriginalRows)
    ' setup just once
    Dim series As String = "Series Name"
    chartX.Series.Add(series)
    chartX.Series(series).ChartType = DataVisualization.Charting.SeriesChartType.Pie
    chartX.Series(series).XValueMember = "Name"
    chartX.Series(series).YValueMembers = "Count"
    chartX.ChartAreas(0).Area3DStyle.Enable3D = True
    chartX.Series(series).Label = "#VALX" & Environment.NewLine & "(#PERCENT)"
    chartX.Series(series)("PieLabelStyle") = "Disabled"
    ' bind to the entire set
    chartX.DataSource = dv
    chartX.DataBind()
    

    【讨论】:

    • 如果我为表格添加一次系列,它的工作原理,但由于这个只有一个系列的价值产生。我想在 asp.net 中为饼图填充没有系列和整体只有一个图例文本。你能告诉我,这怎么可能?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多