zoukankan      html  css  js  c++  java
  • 不使用web服务实现文本框自动完成扩展

    以前写Ajax 的AutoCompleteExtender功能,都需要写WCF Service或是Web Service数据源。但一个系统中,很多文本框都想使用AutoComplete的功能。我们不可能写很多的Service,比如一些较小的数据。我们是否有一个可替换的方法呢?这是肯定的。下面的演示,Insus.NET以不用写Service来实现文本框的AutoCompete extender功能。

    首先从数据库获取数,你可以写SQL语句,或是写存储过程,以下是获取域用户信息,仿Outlook输入收件人效果。
    获取域信息,可参考:http://www.cnblogs.com/insus/archive/2013/03/25/2980838.html 或 http://www.cnblogs.com/insus/archive/2011/08/30/2159776.html

    在[ActiveDirectoryInfo]表中的信息,是定期与域的活动目录同步。

    usp_ActiveDirectoryInfo_GetDisplayNameForService
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:        Insus.NET
    -- Create date: 2013-03-28
    -- Description:    Get dissplay name form web service
    -- =============================================
    CREATE PROCEDURE [dbo].[usp_ActiveDirectoryInfo_GetDisplayNameForService]
    (
        @PrefixText NVARCHAR(MAX),
        @Count INT
    )
    AS
    DECLARE @W NVARCHAR(MAX) = @PrefixText + '%'
    EXECUTE('SELECT TOP (' + @Count + ') [displayName] FROM [dbo].[ActiveDirectoryInfo] WHERE [displayName] LIKE ''' + @w +'''')


    在逻辑层,我们写一个类别,去与数据层交互:

    ActiveDirectoryInfo
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Web;
    
    /// <summary>
    /// Summary description for ActiveDirectoryInfo
    /// </summary>
    namespace Insus.NET
    {
        public class ActiveDirectoryInfo
        {      
            BusinessBase objBusinessBase = new BusinessBase();
    
            public ActiveDirectoryInfo()
            {
                //
                // TODO: Add constructor logic here
                //
            }
                   
            public DataTable GetDisplayName(string prefixText,int count)
            {
                Parameter[] parameter = { 
                                            new Parameter ("@PrefixText",SqlDbType.NVarChar,-1,prefixText),
                                            new Parameter ("@Count",SqlDbType.Int,4,count)
                                        };          
               return objBusinessBase.GetDataToDataSet("usp_ActiveDirectoryInfo_GetDisplayNameByPrefixText", parameter).Tables[0];           
            }
        }
    }


    以上类别中,有一个对象即是BusinessBase,有关这个,可参考:http://www.cnblogs.com/insus/articles/1654653.html

    把ScriptManager

     <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

    或ToolkitScriptManager

     <ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" />

    拉至网页。

    下图是html与cs程序,在方法前必须两行代码:

    [System.Web.Services.WebMethod]
    [System.Web.Script.Services.ScriptMethod]

    效果:

  • 相关阅读:
    虚函数表
    写出float x 与“零值”比较的if语句
    系统表的构成
    UEFI的inf文件构成
    最短路径算法
    EDK2与EDK2工具链关系图
    GIT提交本地文件
    docker学习笔记-04:docker容器数据卷
    docker学习笔记-03:docker的镜像原理
    docker学习笔记-02:docker常用命令
  • 原文地址:https://www.cnblogs.com/insus/p/2986217.html
Copyright © 2011-2022 走看看