2012-01-05 52 views
0

我有一個下拉列表填充了一些表名。當選擇改變時,GridView也應該相應地反映這些改變。爲SqlDataSource動態構建選擇查詢

我可以想到1種方法可能可以工作 - 使用帶有參數的表格名稱的存儲過程。

但是我也想知道是否還有其他方法可以實現這一點,而且不需要編寫太多的代碼。有任何想法嗎?謝謝

回答

0

我傾向於同意該存儲過程的方法是優選在上述兩種實施例中的構造的SQL。

雖然在這種情況下並不可怕,但您會通過電線發送完整查詢,這不是可取的。此外,您還可以確保直接訪問表格,但授予訪問SPROC的權限,以便您可以將此列表功能提供給某些用戶組,而不允許他們直接訪問。

我建議在存儲過程中使用CASE語句而不是構建SQL。這將保證您只支持您知道的表,並禁止任何濫用該系統。

+0

是的,我同意你提出的觀點。 – woodykiddy 2012-01-09 04:58:13

0

作爲一種替代方法,您可以動態設置Sqldatasource的選擇命令。需要設置SelectCommandType =「文本」和如下使用代碼:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    switch (DropDownList1.SelectedValue.ToString()) 
    { 
     case "TABLE1": 
      SqlDataSource1.SelectCommand = "Select fieldName from TABLE1"; 
      break; 
     case "TABLE2": 
      SqlDataSource1.SelectCommand = "Select fieldName from TABLE2"; 
      break; 
     default:   
      SqlDataSource1.SelectCommand = "Select fieldName from TABLE"; 
      break; 
    } 
}