热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Ajax智能匹配检索(含图含完整代码)

使用谷歌搜索引擎的用户都知道,只要在文本框中输入部分关键字,就能显示相关搜索提示信息列表。如图:   本技术的核心是通过ASP.NETAjaxControlToolkit中的Aut

使用谷歌搜索引擎的用户都知道,只要在文本框中输入部分关键字,就能显示相关搜索提示信息列表。如图:

 

Ajax智能匹配检索(含图含完整代码)

Ajax智能匹配检索(含图含完整代码)

 

 

本技术的核心是通过ASP.NET Ajax Control Toolkit中的AutoCompleteExtender控件实现。

AutoCompleteExtender控件实现自动输入建议的功能,通过调用WebService或本页面对应的方法名来获取提示数据,供用户达到自动选择的功能。

 

实现过程:

1.首先建立数据大家随便啊,然后建立个简单的表。

Ajax智能匹配检索(含图含完整代码)

Ajax智能匹配检索(含图含完整代码)

2.新建1个Ajax网站,名字自己随便起哈,在建一个主页面Default.aspx.

3.在Default.aspx中添加1个ScriptManager控件、1个AutoCompleteExtender控件和1个TextBox控件,配置如下:

        "ScriptManager1" runat="server" />
        "AutoCompleteExtender1" runat="server" TargetCOntrolID="TextBox1"
                ServicePath="KeyFind.asmx" CompletiOnSetCount="10" MinimumPrefixLength="1" ServiceMethod="GetCompleteDepart">
        
        "TextBox1" runat="server" 352px" 27px">

 

4.创建1个Web服务,将其命名为KeyFind.asmx,该服务主要完成智能检索功能。

5.在KeyFind.asmx Web服务的KeyFind.cs文件下加入如下代码:

using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
//引入空间
using System.Data;
using System.Data.OleDb;
using System.Configuration;
/// 
/// KeyFind 的摘要说明
/// 
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//添加服务脚本(必须添,否则程序不能正常运行)
[System.Web.Script.Services.ScriptService]
public class KeyFind : System.Web.Services.WebService
{

    public KeyFind()
    {
        //如果使用设计的组件,请取消注释以下行 
        //InitializeComponent(); 
    }
    //定义数组保存获取的内容
    private string[] autoCompleteWordList = null;

    //两个参数“prefixText”表示用户输入的前缀,count表示返回的个数
    [WebMethod]
    public String[] GetCompleteDepart(string prefixText, int count)
    {
        ///检测参数是否为空
        if (string.IsNullOrEmpty(prefixText) == true || count <= 0) return null;
        // 如果数组为空
        if (autoCompleteWordList == null)
        {
            //读取数据库的内容
            OleDbConnection cOnn= new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("Ex18_02.mdb"));
            conn.Open();
            OleDbDataAdapter da = new OleDbDataAdapter("select keyName from keyInfo  where keyName like'" + prefixText + "%' order by keyName", conn);
            DataSet ds = new DataSet();
            da.Fill(ds);
            //读取内容文件的数据到临时数组
            string[] temp = new string[ds.Tables[0].Rows.Count];
            int i = 0;
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                temp[i] = dr["keyName"].ToString();
                i++;
            }
            Array.Sort(temp, new CaseInsensitiveComparer());
            //将临时数组的内容赋给返回数组
            autoCompleteWordList = temp;
            if (conn.State == ConnectionState.Open)
                conn.Close();
        }
        //定位二叉树搜索的起点
        int index = Array.BinarySearch(autoCompleteWordList, prefixText, new CaseInsensitiveComparer());
        if (index <0)
        {   //修正起点
            index = ~index;
        }
        //搜索符合条件的数据
        int matchCount = 0;
        for (matchCount = 0; matchCount )
        {   ///查看开头字符串相同的项
            if (autoCompleteWordList[index + matchCount].StartsWith(prefixText, StringComparison.CurrentCultureIgnoreCase) == false)
            {
                break;
            }
        }
        //处理搜索结果
        string[] matchResultList = new string[matchCount];
        if (matchCount > 0)
        {   //复制搜索结果
            Array.Copy(autoCompleteWordList, index, matchResultList, 0, matchCount);
        }
        return matchResultList;
    }
}

完!

简单明了!


 

 


推荐阅读
  • 本文详细介绍了Linux系统中init进程的作用及其启动过程,解释了运行级别的概念,并提供了调整服务启动顺序的具体步骤和实例。通过了解这些内容,用户可以更好地管理系统的启动流程和服务配置。 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • andr ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • Scala 实现 UTF-8 编码属性文件读取与克隆
    本文介绍如何使用 Scala 以 UTF-8 编码方式读取属性文件,并实现属性文件的克隆功能。通过这种方式,可以确保配置文件在多线程环境下的一致性和高效性。 ... [详细]
  • 本文探讨了 Spring Boot 应用程序在不同配置下支持的最大并发连接数,重点分析了内置服务器(如 Tomcat、Jetty 和 Undertow)的默认设置及其对性能的影响。 ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本教程涵盖OpenGL基础操作及直线光栅化技术,包括点的绘制、简单图形绘制、直线绘制以及DDA和中点画线算法。通过逐步实践,帮助读者掌握OpenGL的基本使用方法。 ... [详细]
  • 本文详细介绍了如何在CentOS 7操作系统上安装和配置Grafana,包括必要的依赖项安装、插件管理以及服务启动等步骤。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 解决网站乱码问题的综合指南
    本文总结了导致网站乱码的常见原因,并提供了详细的解决方案,包括文件编码、HTML元标签设置、服务器响应头配置、数据库字符集调整以及PHP与MySQL交互时的编码处理。 ... [详细]
  • 本文探讨了在 ASP.NET MVC 5 中实现松耦合组件的方法。通过分离关注点,应用程序的各个组件可以更加独立且易于维护和测试。文中详细介绍了依赖项注入(DI)及其在实现松耦合中的作用。 ... [详细]
author-avatar
DomeSmart
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有