2012-08-22 80 views
3

新手來asp.net這裏。ASP.NET SelectParameter/Control參數使用

我想設置一個選擇參數和controlparameters基於文本框的日期範圍的Web控件來檢索一個asp.net頁面上的數據。

SelectCommand="SELECT SUM(Turnover) AS TotalTurnover, (SUM(Turnover)/(SELECT COUNT(*) FROM (SELECT DISTINCT [Trade Date] FROM TradeSummary WHERE ([Trade Date] BETWEEN @T1 AND @T2)))) AS AverageTO FROM TradeSummary WHERE ([Trade Date] BETWEEN @T1 AND @T2)"> 
         <SelectParameters> 
          <asp:ControlParameter ControlID="TradeDate1" DefaultValue="8-10-2012" Name="T1" Type="DateTime" PropertyName="Text" /> 
          <asp:ControlParameter ControlID="TradeDate2" DefaultValue="8-11-2012" Name="T2" Type="DateTime" PropertyName="Text" /> 
        </SelectParameters> 

TradeDate1和TradeDate2指的是我爲日期選擇設置的2個文本框控件。

我想知道如何檢查@ T1和@ T2的值,以便我可以確保傳遞給數據庫的查詢是有效的,因爲它好像是如果我要eval(「TotalTurnover」),那麼我得到一個dbnull錯誤。

任何幫助,將不勝感激。謝謝!

+0

在檢查值之後,您還可以從代碼中傳遞控制參數。 –

回答

2

您也可以在檢查值後將代碼中的控制參數傳遞給您。添加在你的Page_Load下面的代碼或任何其它控制事件(例如按鈕)

// check your textbox values 
if(TradeDate1.Text != null) 
{ 
    SqlDataSource1.SelectParameters.Add("@T1",TradeDate1.Text); 
} 
+0

謝謝,也許我錯過了一些非常明顯的東西。我目前的標記只是指定了2個參數,並且需要明確添加它,以便查詢包含這些值? –

+0

是的你是對的 –

+0

Waqar,這完美的作品。非常感謝!如果你不介意我討論一下話題,那麼在代碼隱藏之前調用add方法之前,selectcommand是否會針對數據庫運行?我對這個查詢運行時有些困惑。是否應該在調用ADD之前設置默認值以檢索零或默認數據集? –

1

我會檢查一個按鈕的點擊事件的文本框的輸入值,如果他們對一切ok去數據綁定數據源。然後在數據源的選擇事件中,我將通過使用datsource.SelectParameters [「T1」]。DefaultValue = date;