带有DataBindCrossTable的ASP.NET图表

时间:2015-12-21 15:53:16

标签: c# asp.net asp.net-charts

这是我第一次尝试使用ASP.NET Chart控件。 我总是使用其他第三方图表。

这一次,我创建了一个使用Chart控件的Web表单用户控件。

让我先从我的数据开始。 这是我从数据库函数返回的数据: enter image description here

我希望我的图表控件显示十月,十一月和十二月的数据。 正如你所看到的,11月有3条记录 - 这是因为'状态'不同。 所以,我希望我的图表控件有以下条形码:

- 1 October X value with 1 bar 'lost' with Y count 2

- 1 November X value with 3 bars 'lost, stolen, found' with 1 Y count each.

- 1 December X Value with 1 bar 'stolen' with Y count 1

我在控件加载时获得带有上述屏幕截图结构的数据表,然后像这样绑定图表:

        protected void Page_Load(object sender, EventArgs e)
        {
            DataTable dt = _stolenFunctions.GetDashboardChartDataTable(DateTime.Now.Year);

            StolenControlBarChart.DataBindCrossTable(dt.AsEnumerable(), "Status", "Month", "Count", "Label=Status");
        }

ASP.NET代码:

    <asp:Chart ID="StolenControlBarChart" CssClass="stolenControlBarChart" Width="500" runat="server">
        <ChartAreas>
            <asp:ChartArea Name="ChartArea1"></asp:ChartArea>
        </ChartAreas>
    </asp:Chart>

但由于某种原因,图表显示的数据如下所示: enter image description here

任何人都可以帮我在正确的方向吗? :)

1 个答案:

答案 0 :(得分:1)

不确定这会有多大帮助,但如果添加其他未显示0计数的状态,图表会是什么样子。这会使图表看起来正确吗?我只是想知道每个月是否期待3个结果,并且在第一个月仅收到1个结果时会出现偏差。并不是说这是一个解决方案,但它可能会为您提供足够的信息来推进。

换句话说,尝试向数据库中添加行以获得此结果

MONTH    Status    Count
October  Lost      2
October  Stolen    0
October  Found     0
November Stolen    1
November Lost      1
November Found     1
December Stolen    1
December Lost      0
December Found     0

这会使图表正确吗?