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

问题描述:

我想用空系列来绘制我的图表似乎很奇怪。ASP.NET图表控件 - 如何自动绘制图表区域为空?

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

像这样的结果:

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

澄清甚至进一步将意味着我要预先绘制X轴的日期,从1日到最后在规定的一个月。但是,它仍然应该将数据绘制在带有数据的日期的x轴上;) – KristianB

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

在这个标签中,您可以设置轴明确MinimumMaximum和图表将尊重他们。但是研究设置什么可能有点棘手。

假设你的存储过程将返回DateTime S(或SQL当量),图表将有效地将这些使用OLE Automation conversiondouble s,这是足够近的天数午夜30后,1899年十二月如果你是(因为它看起来)只是使用标记,你将不得不手动计算你想要的日期并提供这些数字,因为我不认为图表标记会为你转换。

2011-08-01的OADate是40756,并增加每天只需添加1,所以31日是40786。尝试一下,看看它是否有效 - 如果它有效,你可以考虑是否想通过开始在代码隐藏方面做一些工作来更容易地指定它。

+0

感谢您的回答:)您给了我一个想法,试着让存储过程找到两个输入值之间的所有日期,然后离开加入他们与实际发现的数据。 – KristianB

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

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

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