繁体   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