AutoComplete的使用方法


百度 酷狗,反正使用搜索功能時,都會看到類似於圖一這種自動補全的功能,灰常的方便,今天做一個項目,剛好要加這個功能,於是一通百度之后,總算做出來,源代碼在文章末尾會提供下載。還有,我這個是參考了網上的一篇文章寫出來的,比較簡單,可以先看一下這個網址:jquery.autocomplete.js的簡單用法,這個基本看完都會的了,會了的話,就不必看下去了.

 

 

圖一

如果上面的鏈接掛了打不開的話,可以接着往下看. 

 

准備工作:

1、要下載一個jquery.autocomplete.js(網上多得很,可以自己上網上下載),下載完以后,把它引到需要使用自動補全功能的頁面當中.

2、它是基於jquery的,隨便引入一個jquey.js文件即可,這棵大白菜我就不提供了.

 

做完上面兩步之后,可以正式開始了.

 

1.新建一個頁面 AutoComplete.aspx,然后在<head></head>標簽中加入如下代碼(其中txtUserName為需增加自動補分功能的textbox控件ID,而AutoComplete.ashx為后台ajax調用的處理頁面):

<script type="text/javascript">
$(function() {
     $("#txtUserName").autocomplete("Ajax/AutoComplete.ashx"); //由ashx取得資料
});
</script>

 

 

2.這樣,上面的頁面就會在每次輸入了文字后自動把輪入框的內容以get的方式傳至AutoComplete.ashx頁面進行處理,具體的請求URL為:Ajax/AutoComplete.ashx?q=[你所入的內容];這是默認的方式,而且只能傳一個值,當你需要傳其它值時,上面的寫法就不能滿足你的需要了.多參數的可以這樣子寫(我原文復制了過來,只看紅色的就可以了,其它的可以自己發揮).

<script type="text/javascript">
$(document).ready(function() {
        $("#<%=txtUserName.ClientID %>").autocomplete("Ajax/AutoComplete.ashx", {             width: 155,
            selectFirst: true,
            autoFill: true,
            minChars: 0,
            scroll: true,
            mustMatch: true,
            extraParams: { a: "1", b: "2", c: "3"} //此處實際請求的URL為"Ajax/AutoComplete.ashx?q='[你在txtUserName中輸入的值]'&a=1&b=2&c=3"

            //BUG   ---begin
            //此處報錯,灰常的無語,日后有時間再驗證.
            //formatItem: function (row, i, max) {
            //    return "<td align='left'>{0}</td><td align='right'>{1}</td>".format(row[0], row[1]);
            //}
            //BUG   ---end
 }        );
       });

        String.prototype.format = function() { //String 格式化
            var arg = arguments;
            return this.replace(/\{(\d+)\}/g, function(i, m) {
                return arg[m];
            });
        }
      
    </script>

 

像上面這樣子,就能夠傳其它值了,你可以用$("#[ID]").val()來選取你需要的控件的值.這樣子,基本上的需求都足夠了.

3.用戶界面做完了以后,在數據庫中新增一張表格,隨你的便,可以參考下圖(表名為:test):

  

 

圖二

 

 

4.表建完以后,新建一個后台處理的頁面:AutoComplete.ashx ,我直接把完整的代碼片斷貼出來好了,老規矩,看紅字.

<%@ WebHandler Language="C#" class="AutoComplete" %>

using System;
using System.Web;
using System.Data;

public class AutoComplete : IHttpHandler {
    
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";  //這是新建的時候默認就在的,好像是指定Response的什么類型之類的,不管它.
        GetAutoComplete(context);  //調用方法
    }
    
    private void GetAutoComplete(HttpContext context)     {
        OraDbHelper helper = new OraDbHelper();     //實例化數據操作類
         string a = context.Request.QueryString["a"].ToString();
        string b = context.Request.QueryString["b"].ToString();
        string c = context.Request.QueryString["c"].ToString();
        string q = context.Request.QueryString["q"].ToString();

        string sql = "Select * From test Where userName like '" + q + "%'";
        DataSet ds = helper.getDS(sql);
        int i, j;
        j = ds.Tables[0].Rows.Count;
        for (i = 0; i < j; i++)
        {
            DataRow dr = ds.Tables[0].Rows[i];
            context.Response.Write(string.Format("{0}\n", dr["userName"])); //這個就是我們輸入文字后,界面自動帶出來的選擇列表信息,你可以綁數據庫,也可以自定義
        }
    }


    //下面這些是系統自帶的,不用理也不能刪掉它們,否則報錯.
    public bool IsReusable {
        get {
            return false;
        }
    }

}

 

5.好了,做完這一步之后,直接按F5看一下頁面的效果吧,如圖三,那些下自動補全的CSS樣式可以自己修改(路徑:css/jquery.autocomplete.css),文件網上面也有,我這個是公司里面改好的,看起來還不錯,我直接用了.呵呵.

 

 

圖三

 

6.資源下載(數據庫我就不上傳了,記得修改一下SqlConnectionString這個鳥就可以了,隨便新建個數據庫,添加一張表,這個木有問題吧...)

 

附件:AutoComplete源碼

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM