asp.net AutoCompleteExtender的一个简单例子代码

让我们来详细讲解“asp.net AutoCompleteExtender的一个简单例子代码”的完整攻略。

概述

AutoCompleteExtender是ASP.NET AJAX库的一个控件,可以帮助实现输入框的“自动补全”功能,可方便地进行基于 AJAX 技术的实时搜索,并返回搜索结果。它可以很方便地增强用户的输入体验,提高某些场景下的用户体验。

下面我将分享一个简单的AutoCompleteExtender的例子,以帮助大家更好地理解它的使用方式。

步骤

本例子的实现,包含以下内容:

  1. 一个包含数据源、提供AutoCompleteExtender支持的服务页面。

  2. 用来显示自动补全数据的页面。

第一步:创建数据库

首先需要创建一个表,用来存储我们所需的数据。在本例中,我们假设有一个包含国家名称和ISO 3166-1-alpha-2标准代码的国家列表,它们存储在一个名为Countries的表中。

CREATE TABLE [dbo].[Countries] (
    [CountryName] NVARCHAR(100) NOT NULL,
    [CountryCode] NVARCHAR(2) NOT NULL
)

插入一些示例数据以便测试:

INSERT INTO [dbo].[Countries] ([CountryName], [CountryCode]) VALUES (N'中国', 'CN')
INSERT INTO [dbo].[Countries] ([CountryName], [CountryCode]) VALUES (N'美国', 'US')
INSERT INTO [dbo].[Countries] ([CountryName], [CountryCode]) VALUES (N'加拿大', 'CA')
INSERT INTO [dbo].[Countries] ([CountryName], [CountryCode]) VALUES (N'日本', 'JP')
INSERT INTO [dbo].[Countries] ([CountryName], [CountryCode]) VALUES (N'英国', 'GB')

第二步:创建Web服务

我们需要将此服务挂接在ASP.NET的页面上,以使用AutoCompleteExtender控件进行访问。

我们将使用C#编写此服务,因此需要创建一个Web服务项目。创建完成后,我们在根目录下创建一个名为Countries.asmx.cs的文件,并编写以下代码:

using System.Collections.Generic;
using System.Data.SqlClient;
using System.Web.Script.Services;
using System.Web.Services;

namespace AutoCompleteExtenderSample
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    [System.Web.Script.Services.ScriptService]
    public class Countries : System.Web.Services.WebService
    {
        private const string CONNECTION_STRING = "Data Source=(local);Initial Catalog=MYDATABASE;Integrated Security=True";

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public List<string> GetCountryNames(string prefix)
        {
            var countries = new List<string>();

            var query = "SELECT CountryName FROM Countries WHERE CountryName LIKE @prefix + '%'";
            using (var conn = new SqlConnection(CONNECTION_STRING))
            using (var cmd = new SqlCommand(query, conn))
            {
                cmd.Parameters.AddWithValue("@prefix", prefix);

                conn.Open();
                var reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    countries.Add(reader.GetString(0));
                }
            }

            return countries;
        }
    }
}

上述代码为C#语言编写的Web服务,GetCountryNames函数将根据查询的前缀字符串返回匹配的国家名称列表。 代码中 @prefix 是匹配的前缀,在查询中使用 % 来虚拟类似于 SQL LIKE 的匹配功能。

第三步:创建用来展示自动补全数据的页面

此页面将被使用者输入的值自动填充。我们在此页面中放置一个文本框,并使用AutoCompleteExtender控件将该文本框与我们的服务Countries.asmx绑定。

我们的网页代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="AutoCompleteExtenderSample.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:TextBox ID="tbCountry" runat="server"></asp:TextBox>
            <ajaxToolkit:AutoCompleteExtender ID="aceCountry" runat="server"
                ServicePath="~/Countries.asmx"
                ServiceMethod="GetCountryNames"
                TargetControlID="tbCountry"
                MinimumPrefixLength="1" />
        </div>
    </form>
</body>
</html>

在上面的代码中,我们添加了JQuery和JQuery UI的引用,以及在页面上添加了一个文本框和一个AutoCompleteExtender控件。

AutoCompleteExtender将文本框 “绑定”到了刚才创建的服务Countries.asmx,并传递了最小前缀长度的值,MinimumPrefixLength指示当输入字符串的长度大于等于MinimumPrefixLength时,才会调用服务进行查询。

第四步:运行

运行我们的应用程序,输入国家名称的前几个字符,即可看到自动补全下拉框中匹配的国家名称。此下拉框的内容是基于我们在GetCountryNames函数中使用查询语句返回的结果动态生成的。

注意, 以上Url中的 "~/Countries.asmx" 在项目的根目录, 否则请将URL修改为相对于应用程序根路径的路径。

示例说明

示例1: 最小前缀长度(MinimumPrefixLength)

AutoCompleteExtender控件的MinimumPrefixLength属性是指当用户开始输入时,需要等待用户至少输入的字符数目才能调用“自动补全”服务进行数据查询。

例如:为了在本例中的服务上获取国家名称,在输入至少2个字符后,AutoCompleteExtender控件将调用GetCountryNames方法进行匹配操作。

<ajaxToolkit:AutoCompleteExtender ID="aceCountry" runat="server"
    ServicePath="~/Countries.asmx"
    ServiceMethod="GetCountryNames"
    TargetControlID="tbCountry"
    MinimumPrefixLength="2" />

示例2: 分页(Pagination)

如果你需要为自动补全设置“分页”,可以在GetCountryNames中使查询语句进行相应的更改。

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<string> GetCountryNamesWithPagination(string prefix, int pageNumber)
{
    var countries = new List<string>();
    var pageSize = 10;
    var query = "SELECT CountryName FROM Countries WHERE CountryName LIKE @prefix + '%' ORDER BY CountryName OFFSET @offset ROWS FETCH NEXT @pageSize ROWS ONLY";
    using (var conn = new SqlConnection(CONNECTION_STRING))
    using (var cmd = new SqlCommand(query, conn))
    {
        cmd.Parameters.AddWithValue("@prefix", prefix);
        cmd.Parameters.AddWithValue("@pageSize", pageSize);
        cmd.Parameters.AddWithValue("@offset", (pageNumber - 1) * pageSize);

        conn.Open();
        var reader = cmd.ExecuteReader();
        while (reader.Read())
        {
            countries.Add(reader.GetString(0));
        }
    }

    return countries;
}

这个示例中,使用pageNumber来指示当前页码,pageSize指示每页显示的最大数量。由于是根据前缀匹配查找,因此我们需要使用 Order By 子句来进行排序,并使用 Offset 来指示查询时从哪一条记录开始返回结果。最后使用Fetch Next指示查询的结果数。

综上,我们详细介绍了如何使用AutoCompleteExtender控件,完成了包含数据源、自动补全的Web服务和展示自动补全数据的页面,并给出了两个进一步的示例说明。希望可以对大家有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:asp.net AutoCompleteExtender的一个简单例子代码 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • .Net反向代理组件Yarp用法详解

    以下是“.Net反向代理组件Yarp用法详解”的完整攻略: 什么是Yarp Yarp(Yet Another Reverse Proxy)是一个开源的反向代理组件,由微软开发。它是一个轻量级、高性能、可扩展的反向代理组件,可以用于构建高性能的微服务网关、API网关等。 Yarp的特性 Yarp具有以下特性: 支持HTTP、HTTPS、WebSocket等协议…

    C# 2023年5月12日
    00
  • C# String字符串案例详解

    C# String字符串案例详解 在C#编程中,字符串常常是我们经常需要处理的数据类型之一。因此,对于string类型的操作和处理,是我们编程学习的重中之重。本文将带大家详细了解C# String字符串的应用实例及操作技巧。 1. 字符串的定义及基本操作 在C#中,String字符串是一种不可变的类型,即被创建之后,它的值就不能被修改了。以下是一些定义字符串…

    C# 2023年5月31日
    00
  • C# Linq的ToList()方法 – 将序列转换为列表

    C# Linq的ToList()方法详解 ToList()方法是C#中Linq查询的扩展方法之一,它将一个序列转换成一个List集合,实现方式是创建一个包含序列中所有元素的新实例。该方法的通用使用方式如下所示: public static List<TSource> ToList<TSource>(this IEnumerable&l…

    C# 2023年4月19日
    00
  • C# ManagementObjectSearcher操作window案例详解

    C#ManagementObjectSearcher操作window案例详解 简介 在Windows开发中,我们通常需要通过WMI(Windows Management Instrumentation)编程方式来获取或者修改Windows系统的信息,如获取进程、服务、系统配置等信息。System.Management是.Net Framework中专门用于W…

    C# 2023年5月15日
    00
  • C#连接到sql server2008数据库的实例代码

    下面是连接到SQL Server 2008数据库的C#代码实例。 示例1:使用SQLConnection连接数据库 添加引用:在Visual Studio中,选择“解决方案资源管理器”,右键单击“引用”文件夹,选择“添加引用”,在“添加引用”对话框中选择“System.Data.SqlClient”引用,点击“确定”按钮。 编写C#代码:代码实现步骤如下: …

    C# 2023年6月2日
    00
  • 浅析C# 使用Process调用外部程序中所遇到的参数问题

    浅析C#使用Process调用外部程序中所遇到的参数问题 介绍 在使用C#中的Process类调用外部程序时,我们常常会遇到参数问题,例如,我们想要执行ping www.google.com这条命令,但是在C#程序中调用时,却无法成功执行。本篇文章将详细讲解在使用C#中的Process类调用外部程序时所遇到的参数问题及其解决方案。 参数问题 当我们使用Pro…

    C# 2023年5月15日
    00
  • C#自定义字符串补0函数实例

    下面我就为您详细讲解“C#自定义字符串补0函数实例”的完整攻略。 函数的说明 在实际工作和生活中,经常需要将数字或字符串进行长度的对齐,例如将一个数字进行补0以便更好地显示等,这时候就需要通过编写一个自定义字符串补0的函数来实现。 /// <summary> /// 自定义字符串补0函数 /// </summary> /// <…

    C# 2023年6月8日
    00
  • c#转换全角半角方法示例

    当我们需要对用户输入的字符或文本进行处理时,经常需要将全角字符转换为半角字符或者将半角字符转换为全角字符。c#中提供了相应的方法来实现这些功能。下面是一个完整的示例说明“c#转换全角半角方法”的攻略。 1. 转换全角到半角 使用 System.Text.RegularExpressions.Regex 类的 Replace 方法可以实现将全角字符转换为半角字…

    C# 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部