2012-04-16 117 views
1

我需要動態填寫「SelectParameters」,但我在Google上找到的所有內容都使用了固定參數。爲SqlDataSource動態設置參數字段

<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="XX" 
          OnSelecting="SqlDataSource2_Selecting" SelectCommand=""> 
          <SelectParameters> 
          </SelectParameters> 
         </asp:SqlDataSource> 

有沒有解決方法?

我也嘗試使用「OnSelecting」事件,但我不能給不存在的參數賦值。

protected void SqlDataSource2_Selecting(object sender, SqlDataSourceSelectingEventArgs e) 
    { 
     string[] queryFields = new string[] { ... }; // some dynamic field depends on different table 

     foreach (string s in queryFields) 
     { 
      e.Command.Parameters["@" + s].Value = "filter"; 
     } 

    } 
+0

是否要設置參數值或動態變量和值? – Arion 2012-04-16 10:28:01

+0

@Arion只有參數字段,我知道如何設置值,但當參數不存在時失敗(我剛剛更新了我的問題) – daisy 2012-04-16 10:29:03

回答

2

可以在後面的代碼設置的變量是這樣的:

SqlDataSource1.SelectParameters.Add("parameterName", "parameterValue"); 

但要注意,你需要明確加入他們之前的參數。因爲否則,你將會得到重複的參數。

-1

如果你確定與初始化控制時,你可以在控制的init事件做這樣的設置連接字符串:

protected void SqlDataSource1_Init(object sender, EventArgs e) 
{ 
    SqlDataSource1.ConnectionString = <whatever code you want here>; 
    SqlDataSource1.ProviderName = <whatever code you want here>; 
} 

這仍然是在您確定連接屬性感動態在運行時間,而不是設計時間。這幫助我避免了不得不求助於web.xml轉換,並根據指定QA/PROD環境的環境變量在QA和PROD連接字符串之間切換。