2011-08-23 80 views
4

我想用空系列來繪製我的圖表似乎很奇怪。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

回答

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

1

另一個解決方案是將空白點插入圖表。您將需要使用DataManipulator類。儘管如此,仍然需要設置x軸最大最小值。 例如:

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

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