2011-09-04 51 views
0

我試圖創建簡單的搜索。我在母版 「txtSearch」 文本框和 「搜索」 按鈕,按鈕有一項PostBackUrl = Search.aspx從Request.Form中設置SqlDataSource參數

在母版

<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 我tryed使用QueryStringField而不是FormField和它的作品,不知道什麼是錯與FormField。

+0

您應該添加更有意義的問題標題。這與SqlDataSource有關,而不是Request.Form。 –

+0

=== Request.Form(「txtSearch」) – RaShe

+0

您確定搜索文本存在於Request.Form中(「txtSearch 「)? –

回答

0

爲什麼不避免使用會話變量(例如,我不喜歡'全局'變量的概念,它無法知道它是否被錯誤的代碼無意中改變或破壞了),以及改用ControlParameter

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

讓ASP.net做大部分的工作適合你。