[英]dynamically build select query for SqlDataSource
我有一個下拉列表,其中填充了一些表名。 當選擇更改時,GridView也應相應地反映更改。
我可以想到一種可能可行的方法-使用帶有作為表名提供的參數的存儲過程。
但是我也想知道是否還有其他方法可以做到這一點,而不必編寫太多代碼。 有任何想法嗎? 謝謝
作為一種替代方法,可以動態設置Sqldatasource的select命令。 您需要設置SelectCommandType =“ Text”並使用以下代碼:
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;
}
}
我傾向於同意在上述兩個示例中,存儲過程方法都比構造的SQL更可取。
雖然在這種情況下並不可怕,但是您正在通過網絡發送完整的查詢,這不是可取的。 此外,您還可以保護對表本身的直接訪問,但可以授予對SPROC的訪問權限,因此您可以向某些用戶組提供此列出功能,而又不允許他們直接訪問。
我建議在您的存儲過程中使用CASE語句,而不要構造SQL。 這將確保您僅支持您知道的表,並禁止濫用系統。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.