【发布时间】: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