簡體   English   中英

動態建立SqlDataSource的選擇查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM