动态构建SqlDataSource的选择查询

时间:2012-01-05 03:57:07

标签: c# asp.net sqldatasource

我有一个填充了一些表名的下拉列表。当选择更改时,GridView也应相应地反映更改。

我可以想到一种可能有效的方法 - 使用带有作为表名提供的参数的存储过程。

但我也想知道是否还有其他方法可以实现这一点,好吧,最好不要写太多代码。有任何想法吗?感谢

2 个答案:

答案 0 :(得分:0)

作为替代方法,您可以动态设置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;
    }
}

答案 1 :(得分:0)

我倾向于同意存储过程方法优于上述两个示例中构造的SQL。

虽然在这种情况下并不可怕,但是您要通过电汇发送完整的查询,这不是首选。此外,您还可以保护对表本身的直接访问,但允许访问SPROC,以便您可以向某些用户组提供此列表功能,而不允许他们直接访问。

我建议在存储过程中使用CASE语句而不是构造SQL。这将保证您只支持您知道的 表,并禁止滥用系统。