我有一个填充了一些表名的下拉列表。当选择更改时,GridView也应相应地反映更改。
我可以想到一种可能有效的方法 - 使用带有作为表名提供的参数的存储过程。
但我也想知道是否还有其他方法可以实现这一点,好吧,最好不要写太多代码。有任何想法吗?感谢
答案 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。这将保证您只支持您知道的 表,并禁止滥用系统。