【问题标题】:Setting SqlDataSource Parameters from Request.Form从 Request.Form 设置 SqlDataSource 参数
【发布时间】:2011-09-04 23:01:32
【问题描述】:

我正在尝试创建简单的搜索。我在 MasterPage 中有“txtSearch”文本框和“搜索”按钮,按钮有 PostbackUrl=Search.aspx

在母版页中

<asp:TextBox ID="txtSearch" runat="server" ValidationGroup="b" Text="Users Search" ForeColor="Silver">Users Search</asp:TextBox>

<asp:Button ID="btnSearch" runat="server" Text="Search" ValidationGroup="b" 
PostBackUrl="~/Search.aspx" onclick="btnSearch_Click" />

在 Search.aspx 中,我有显示结果的 GridView 和 SqlDataSource

<asp:SqlDataSource ID="SqlDataSearchResult" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 

    SelectCommand="SELECT vw_aspnet_Users.UserId, vw_aspnet_Users.UserName, Custon_UserInfo.UserId AS Expr1, Custon_UserInfo.FirstName, Custon_UserInfo.LastName, Custon_UserInfo.Location, Custon_UserInfo.Avatar, Custon_MoneyWork.UserId AS Expr2, Custon_MoneyWork.Money, vw_aspnet_Users.LastActivityDate FROM vw_aspnet_Users INNER JOIN Custon_UserInfo ON vw_aspnet_Users.UserId = Custon_UserInfo.UserId INNER JOIN Custon_MoneyWork ON vw_aspnet_Users.UserId = Custon_MoneyWork.UserId WHERE (vw_aspnet_Users.UserName LIKE '%' + @UserName + '%')">
    <SelectParameters>
        <asp:FormParameter FormField="txtSearch" Name="UserName" Type="String" />
    </SelectParameters>
</asp:SqlDataSource>

在定义参数中: UserName =Request.Form("txtSearch") 因为它需要,但它不起作用。我尝试使用 session["search"]=txtSearch.text;及其工作.. 但不是 Request.Form..

UPD 我尝试使用 QueryStringField 代替 FormField 并且它有效,不知道 FormField 有什么问题。

【问题讨论】:

  • 你应该添加一个更有意义的问题标题。这与 SqlDataSource 的关系比 Request.Form 更多。
  • === Request.Form("txtSearch")
  • 您确认搜索文本存在于 Request.Form("txtSearch") 中吗?
  • 嗯.. 不是。为什么会这样?
  • 页面是通过 GET 而不是 POST 调用的吗?

标签: asp.net sqldatasource


【解决方案1】:

为什么不避免使用 Session 变量(例如,我不喜欢将“全局”变量置于其他一切之上,并且无法知道它是否被错误代码无意更改或损坏的想法),并使用改为ControlParameter

<SelectParameters>
        <asp:ControlParameter ControlID="txtSearch" Name="UserName" PropertyName="Text" Type="String" />
    </SelectParameters>

让 ASP.net 为您完成大部分工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 2012-06-30
    • 2012-02-05
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多