天天看點

使用Input控件完成站内搜尋功能

不知道是我傻還是腦子不轉個,當别人問我頁面傳值的方式的時候我能說出來一大堆,也知道怎麼使用(用服務端控件的時候)

但一直以來我都不知道怎麼使用input傳值,今天晚上沒啥事,試了一交,突然想起來一個很重要的東西,那就是input的name屬性,我咋就把你忘了呀!

例如:

<input type="text" name="txtWords"/>

<input type="submit" value="搜尋"/>

哎杯具啊~~  我不知道有多少人和我一樣,把這些東西忘掉了,一直都不知道怎麼用用戶端控件開發asp.net   因為已經習慣了服務端控件給我們帶來的友善。 

然後通過form表單送出:Method="post" 送出方式.   action="Default.aspx" 送出到哪裡.

然後在Default.aspx的頁面中使用 Request.Form["txtWords"]; 來擷取。

别問為什麼是txtWords,如果是這樣,那我上面就白廢話了。。

來個完整的點的代碼吧:

<body>

     <form id="form1" method="post" action="ShowList.aspx">

    <div class="column">

        請輸入搜尋内容:

        <input id="txtWords" name="txtWords" type="text" /><input id="btnSearch" type="submit"

            value="搜尋" /></div>

        <ul>

            <asp:ListView ID="objListView" runat="server">

                <ItemTemplate>

                    <li><span><%#Eval("id") %></span> 

                        <span><%#Eval("saleName") %></span>

                        <span><%#Eval("price") %></span>

                        <span><%#Eval("count") %></span>

                        <span><%#Eval("amount") %></span>

                        <span><%#Eval("InDate") %></span></li>

                 </ItemTemplate>

             </asp:ListView>

          </ul>

     </div>

</form>

</body> 

在這個過程中我發現一個挺有意思的東西,以前一直都沒發現,就是ListView在沒有runat="server"的時候還可以使用,編譯不會報錯。GridView就不行,像TextBox ,Button等控件都不行。

也許你可能會說我吃飽了沒事幹,撐着了寫這個東西,因為我"讨厭"ViewState,它生成的字元串太讓人糾結了.  沒有還不習慣,有吧看着還鬧心,隻好用傳統的Html來寫了,哈哈。

接收表單資料的頁面背景代碼:

 public partial class ShowList : System.Web.UI.Page

    {

        protected void Page_Load(object sender, EventArgs e)

        {

            if (!IsPostBack)

            {

               string Words = Request.Form["txtWords"];

               objListView.DataSource = DAL.GetSearch(Words);

               objListView.DataBind();

            }

        }

     } 

這樣就OK了,其實隻要我們拿到表送出過來的值,後面該怎麼開發就怎麼開發,和開發WebForm一樣(本來就是WebForm嘛。。。)

 可偏偏一直以來都轉不過來這個彎……

使用Input控件完成站内搜尋功能

希望看過這篇文章的同學能夠和我一樣恍然大悟。 

繼續閱讀