【问题标题】:dynamically build select query for SqlDataSource为 SqlDataSource 动态构建选择查询
【发布时间】:2012-01-05 03:57:06
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# asp.net sqldatasource


    【解决方案1】:

    我倾向于同意,在上面的两个示例中,存储过程方法都比构造 SQL 更可取。

    虽然在这种情况下并不可怕,但您正在通过网络发送完整的查询,这是不可取的。此外,您还可以保护对表本身的直接访问,但授予对 SPROC 的访问权限,这样您就可以向某些用户组提供此列表功能,而不允许他们直接访问。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2022-08-14
        • 2010-09-22
        • 1970-01-01
        • 2014-10-07
        • 1970-01-01
        • 2012-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多