2012-01-05 60 views
0

我有一个下拉列表填充了一些表名。当选择改变时,GridView也应该相应地反映这些改变。为SqlDataSource动态构建选择查询

我可以想到1种方法可能可以工作 - 使用带有参数的表格名称的存储过程。

但是我也想知道是否还有其他方法可以实现这一点,而且不需要编写太多的代码。有任何想法吗?谢谢

回答

0

我倾向于同意该存储过程的方法是优选在上述两种实施例中的构造的SQL。

虽然在这种情况下并不可怕,但您会通过电线发送完整查询,这不是可取的。此外,您还可以确保直接访问表格,但授予访问SPROC的权限,以便您可以将此列表功能提供给某些用户组,而不允许他们直接访问。

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

+0

是的,我同意你提出的观点。 – woodykiddy 2012-01-09 04:58:13

0

作为一种替代方法,您可以动态设置Sqldatasource的选择命令。需要设置SelectCommandType =“文本”和如下使用代码:

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; 
    } 
}