在asp.net工程中使用jQuery-ui的autocomplete功能

本文主要是介绍在asp.net工程中使用jQuery-ui的autocomplete功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

整理技术核心在于前端html请求调用Handler.ashx页面查询json结果返回给前端页

几乎大部分交互都是基于jQuery在前端完成,而自动完成(autocomplete)的结果需要服务器进行查询,因此在html请求的过程中进行数据交互处理才能实现这个效果


Default.aspx.cs页核心代码

[csharp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. <head>  
  2.     <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
  3.     <script type="text/javascript" src="js/jquery.js"></script>  
  4.     <link type="text/css" rel="stylesheet" href="css/jquery-ui.css" />  
  5.     <script type="text/javascript" src="js/jquery-ui.js"></script>  
  6.     <script type="text/javascript">  
  7.         $(function () {  
  8.             $("#txtSearch").autocomplete({  
  9.                 minLength: 1,   // 设置搜索的关键字最小长度  
  10.                 max: 10,        // 下拉项目的个数  
  11.                 source: function (request, response) {// 设置自动完成列表的函数,函数包括两个参数,requset 和 response  
  12.                     $.ajax({  
  13.                         type: "POST"// 通过 request.term 可以获得文本框内容  
  14.                         url: "Handler.ashx?keyword=" + request.term, // 使用 Handler.ashx?keyword= 传参  
  15.                         contentType: "application/json; charset=gb2312",  
  16.                         dataType: "json",  
  17.                         success: function (data) {  
  18.                             // jQuery.map(array, callback) :将一个数组中的元素转换到另一个数组中。  
  19.                             // 下面就是把数组["value1", "value2",...]转换为[{value:"value1"}, {value:"value2"},...]  
  20.                             response($.map(data, function (item) {  
  21.                                 return { value: item };  
  22.                             }));  
  23.                         },  
  24.                         /* 
  25.                         error: function () { 
  26.                             alert("ajax请求失败"); 
  27.                         } 
  28.                         */  
  29.                     });  
  30.                 }  
  31.             });  
  32.         });  
  33.     </script>  
  34. </head>  
  35. <body style="overflow:hidden;">  
  36.     <input id="txtSearch" type="text" class="input.search-query" runat="server" placeholder="请输入井号">  
  37. </body>  
  38. </html>  


后端不需要写,单独新建一个文件Handler.ashx,内容如下

[csharp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. <%@ WebHandler Language="C#" Class="Handler" %>  
  2. using System;  
  3. using System.Web;  
  4. using System.Collections.Generic;// List  
  5. using System.Web.Script.Serialization;// JavaScriptSerializer  
  6. using System.Configuration;// ConfigurationManager  
  7. using Oracle.DataAccess.Client;// OracleConnection,OracleCommand,OracleDataReader  
  8.   
  9. // Handler 容器,处理 HTTP 请求  
  10. public class Handler : IHttpHandler  
  11. {  
  12.     /// <summary>      
  13.     /// 根据关键字过滤内容    
  14.     /// </summary>      
  15.     /// <param name="keyword">关键字</param>     
  16.     /// <returns>过滤数组</returns>      
  17.     private string[] GetFilteredList(string keyword)  
  18.     {  
  19.         List<string> resultList = new List<string>();  
  20.         OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["填写要查询的数据库串"].ConnectionString);  
  21.         OracleCommand cmd = conn.CreateCommand();  
  22.         conn.Open();// 打开连接  
  23.         cmd.InitialLONGFetchSize = -1;// 设定为抓取不限长度的Long字段  
  24.         OracleDataReader dr;  
  25.         cmd.CommandText = "填写要查询的sql语句注意结果必须为单列";  
  26.         dr = cmd.ExecuteReader();  
  27.         while (dr.Read())  
  28.         {  
  29.             resultList.Add(dr[0].ToString());// 每次读取后数据前推,因此只需读首行即可  
  30.         }  
  31.         dr.Close();// 关闭读取器  
  32.         conn.Close();// 关闭连接  
  33.         // 过滤关键字  
  34.         int maxlist = 10;// 下拉列最大显示数  
  35.         List<string> filteredList = new List<string>();  
  36.         foreach (string sResult in resultList)  
  37.         {  
  38.             // 判断是否包含关键字,然后加入到过滤后的集合中。     
  39.             if (sResult.Contains(keyword.ToUpper()) && maxlist != 0)  
  40.             {  
  41.                 filteredList.Add(sResult);  
  42.                 maxlist--;  
  43.             }  
  44.         }  
  45.         // 返回数组,以便后面能序列化为JSON格式数据       
  46.         return filteredList.ToArray();  
  47.     }  
  48.   
  49.     // 页面保留方法勿删,用于实际处理接口请求  
  50.     public void ProcessRequest(HttpContext context)  
  51.     {  
  52.         string keyword = context.Request.QueryString["keyword"];// 获取参数字符串  
  53.         if (keyword != null)  
  54.         {  
  55.             JavaScriptSerializer serializer = new JavaScriptSerializer();  
  56.             // 通过 JavaScriptSerializer 对象的 Serialize 序列化为["value1","value2",...]的字符串      
  57.             string jsonString = serializer.Serialize(GetFilteredList(keyword));  
  58.             context.Response.Write(jsonString); // 返回客户端json格式数据         
  59.         }  
  60.     }  
  61.   
  62.     // 页面保留属性勿删,用于获取当前IHttpHandler实例是否可用  
  63.     public bool IsReusable  
  64.     {  
  65.         get  
  66.         {  
  67.             return false;  
  68.         }  
  69.     }  
  70.   
  71. }  




这篇关于在asp.net工程中使用jQuery-ui的autocomplete功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1079610

相关文章

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

Pydantic中Optional 和Union类型的使用

《Pydantic中Optional和Union类型的使用》本文主要介绍了Pydantic中Optional和Union类型的使用,这两者在处理可选字段和多类型字段时尤为重要,文中通过示例代码介绍的... 目录简介Optional 类型Union 类型Optional 和 Union 的组合总结简介Pyd

Vue3使用router,params传参为空问题

《Vue3使用router,params传参为空问题》:本文主要介绍Vue3使用router,params传参为空问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录vue3使用China编程router,params传参为空1.使用query方式传参2.使用 Histo