【问题标题】:Changing SqlDataSource SelectCommand based on control parameters根据控制参数更改 SqlDataSource SelectCommand
【发布时间】:2014-09-28 10:42:44
【问题描述】:

我正在使用 vb.net 和 SQL Server 2008 R2 开发一个 Web 应用程序

在其中一个 aspx 文件中,我有这个:

<asp:SqlDataSource ID="dsParentUnit" runat="server" 
     ConnectionString="<%$ ConnectionStrings:CN %>"
     SelectCommand="SELECT * FROM [t_Unit] WHERE ([UnitTypeID] = (@UnitTypeID) - 1) AND NOT [UnitTypeID] = 1 ORDER BY UnitName ASC"> 
     <SelectParameters>
        <asp:ControlParameter ControlID="cboUnitType" Name="UnitTypeID" PropertyName="SelectedValue" Type="Int16" />
    </SelectParameters>
</asp:SqlDataSource>

其中数据源dsParentUnit 将根据下拉列表cboUnitType 的选定值进行更改。

数据源sdParentUnit 用于另一个下拉列表项。

现在,我想更改WHERE ([UnitTypeID] = (@UnitTypeID) - 1,使它变成类似这样的伪代码:

If cboUnitType.SelectedValue <= 5 Then
   WHERE ([UnitTypeID] = (@UnitTypeID) - 1
Else
   WHERE ([UnitTypeID] = (@UnitTypeID) - 3

我可以这样做吗?

如果可能的话,我想避免在数据库中构建任何存储函数,因为修改数据库所需的文书工作真的很长......

当然,只有在可能的情况下。

谢谢你:)

【问题讨论】:

    标签: sql asp.net vb.net sql-server-2008-r2


    【解决方案1】:

    试试这个:

    <asp:SqlDataSource ID="dsParentUnit" runat="server" 
         ConnectionString="<%$ ConnectionStrings:CN %>"
         SelectCommand="SELECT * FROM [t_Unit] WHERE ([UnitTypeID] = (@UnitTypeID) -     
         <%IIF (cboUnitType.SelectedValue <= 5, "1", "3")%>
         ) AND NOT [UnitTypeID] = 1 ORDER BY UnitName ASC"> 
         <SelectParameters>
            <asp:ControlParameter ControlID="cboUnitType" Name="UnitTypeID" PropertyName="SelectedValue" Type="Int16" />
        </SelectParameters>
    </asp:SqlDataSource>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-31
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      相关资源
      最近更新 更多