ASP.NET jQuery 随笔 使用jQuery UI的Autocomplete方法实现文本框的自动搜索填充功能

首先当然是去下载JQuery UI ,这里这里是下载地址http://jqueryui.com/

第一步是点击这里

image

第二步选择你想要下载的主题进行下载

image

我这里是选择的cupertino主题包

image点击圆圈里的Download进行下载,此时页面会跳转到一个让您进行控件和版本筛选的页面,因为我只需要autocomplate,其他不需要,所以只选择这里控件

image

当然你也可以全选!

然后就是在页面中引用了,这里我直接贴出代码,详细怎么引用自己看就可以了,代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Web.Default" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <link href="Base.css" rel="stylesheet" type="text/css" />
    <link href="js/jquery-ui-1.9.2.custom/css/cupertino/jquery-ui-1.9.2.custom.css" rel="stylesheet"
        type="text/css" />
    <script src="js/jquery-1.8.2.min.js" type="text/javascript"></script>
    <script src="js/jquery-ui-1.9.2.custom/js/jquery-ui-1.9.2.custom.js" type="text/javascript"></script>
    <style type="text/css">
        .ui-autocomplete-loading
        {
            background: white url('img/ui-anim_basic_16x16.gif') right center no-repeat;
        }
        #city
        {
            width: 25em;
        }
    </style>
    <script type="text/javascript">
        $(function () {
            //缓存
            var cache = {};
            $("#txtMajor").autocomplete({
                source: function (request, response) {
                    var term = request.term;
                    if (term in cache) {
                        response($.map(cache[term], function (item) {
                            return {
                                label: item.xk_name + '---' + item.xk_code,
                                value: item.xk_name
                            }
                        }));
                        return;
                    }
 
                    $.ajax({
                        url: "service/GetJsonData.ashx",
                        dataType: "json",
                        data: {
                            searchDbInforItem: request.term
                        },
                        success: function (data) {
                            cache[term] = data;
                            response($.map(data, function (item) {
                                return {
                                    label: item.xk_name + '---' + item.xk_code,
                                    value: item.xk_name
                                }
                            }));
                        }
                    });
                },
                minLength: 1,
                select: function (event, ui) {
                    $("#hidMajorName").val("");
                    $("#hidMajorCode").val("");
                    var strs = ui.item.label.split("---");
                    $("#hidMajorName").val(strs[0]);
                    $("#hidMajorCode").val(strs[1]);
                },
                open: function () {
                    $(this).removeClass("ui-corner-all").addClass("ui-corner-top");
                },
                close: function () {
                    $(this).removeClass("ui-corner-top").addClass("ui-corner-all");
                }
            });
        });
 
    </script>
    <style type="text/css">
        
    </style>
   
</head>
<body>
    <form id="form1" runat="server">
    <div style="margin: 0 auto; width: 800px;">
        <table cellpadding="2" cellspacing="1" border="0" class="tab">
            <tr>
                <td style="text-align: right;">
                    所学专业:
                </td>
                <td>
                    <asp:TextBox ID="txtMajor" class="text" runat="server" Width="250px"></asp:TextBox><span
                        style="color: Red;">&nbsp;&nbsp;可通过拼音码进行查询:如【历史学,可输入lsx进行查询也可输入汉字】</span>
                </td>
            </tr>
        </table>
         <asp:HiddenField ID="hidMajorCode" runat="server" />
         <asp:HiddenField ID="hidMajorName" runat="server" />
    </div>
    </form>
</body>
</html>

这里使用隐藏控件是为了能够在后台获得用户选择的值,下面是一般处理程序中的代码!

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using Common;
using DBUtility;
namespace Web.service
{
    /// <summary>
    /// GetJsonData 的摘要说明
    /// </summary>
    public class GetJsonData : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string input = context.Request["searchDbInforItem"];
            input = input.ToLower();
            string sql = @"SELECT  * FROM dbo.V_xk where spell like '%" + input + "%' or xk_name like '%" + input + "%' or xk_code like '%" + input + "%'";
            DataTable dt = SqlHelper.Query(sql).Tables[0];
            string data =  JsonHelper.ToJson(dt);
            context.Response.Write(data);
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

image

image

image

posted @ 2013-12-12 17:32  jeamsluu  阅读(561)  评论(0编辑  收藏  举报