ASP.NET图表控件 - 如何使用空自动绘制图表区域?

时间:2011-08-23 11:38:37

标签: asp.net database charts

我想用空系列绘制图表似乎很奇怪。

但这是交易。我的图表是在两个日期之间绘制数据库中的数据,这些数据提供给存储过程。

这样的结果:

2011-08-05 - 37,5
2011-08-11 - 20,1
2011-08-16 - 8,0
2011-08-17 - 15,7

用日期绘制x轴。并且y轴用数字(小数)绘制。

绘制它们没有问题。

但我想这样:

2011-08-01 - 0
2011-08-02 - 0
^
etc.
v
2011-08-05 - 37,5
2011-08-06 - 20,1
2011-08-07 - 8,0
2011-08-08 - 15,7
^
etc.
v
2011-08-30 - 0
2011-08-31 - 0

任何人都可以给我一个提示吗?

我的代码如下所示:

        <asp:Chart ID="Chart_NormalRegistrations" runat="server" Height="650px" Width="975px" 
            DataSourceID="SqlDataSource1" Palette="Bright">
            <Series>
                <asp:Series Name="Series1" XValueMember="Dato" XValueType="DateTime" ChartArea="" 
                    YValueMembers="Total" YValueType="Double" YValuesPerPoint="1">
                </asp:Series>
            </Series>
            <ChartAreas>
                <asp:ChartArea Name="ChartArea1">
                    <AxisY Title="Tid" Interval="5">
                    </AxisY>
                    <AxisX Title="Dage" Interval="1">
                    </AxisX>
                    <Area3DStyle Enable3D="True" />
                </asp:ChartArea>
            </ChartAreas>
        </asp:Chart>

        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString=" //connectionstring" 
            SelectCommand="stored_proc_regs" SelectCommandType="StoredProcedure">
            <SelectParameters>
                <asp:Parameter DefaultValue="2011-08-01" Name="from" Type="DateTime" />
                <asp:Parameter DefaultValue="2011-09-01" Name="to" Type="DateTime" />
            </SelectParameters>
        </asp:SqlDataSource>

2 个答案:

答案 0 :(得分:1)

<AxisX Title="Dage" Interval="1">

在此标记中,您可以为轴设置明确的MinimumMaximum,图表会尊重它们。但是弄清楚要设置什么可能有点棘手。

假设您的存储过程正在返回DateTime s(或等效的sql),那么图表将使用OLE Automation conversion有效地将这些转换为double,这个数字足够接近2011-08-01 1899年12月30日午夜后的几天。如果你(看起来)只是使用标记,你必须手动计算你想要的日期并提供这些数字,因为我不认为图表标记会为你转换。

40756的OADate为1,添加一天只需添加40786,因此第31位为{{1}}。尝试一下,看看它是否有效 - 如果确实如此,你可以考虑是否要通过开始在代码隐藏中做一些工作来更容易地指定它。

答案 1 :(得分:1)

另一个解决方案是将空点插入图表。您需要使用DataManipulator Class。尽管如此,仍然需要设置x轴最大最小值。 例如:

Chart_NormalRegistration.Series["Series1"]["EmptyPointValue"] = 0;

Chart_NormalRegistration.DataManipulator.InsertEmptyPoints(1, IntervalType.Days, 
            1, IntervalType.Days, "Series1");