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]

    效果:

  • 相关阅读:
    linux下好用软件全记录
    Shell之Here Document
    ThinkPHP判断更新是否成功的正确方法
    memcached单点登录配置
    gedit搭建c开发环境
    两种算法的比较,学习算法的重要性
    解决sendmail发送邮件慢的问题
    直接拿来用,10个PHP代码片段(收藏)
    Nginx 简单的负载均衡配置示例
    Nginx 虚拟主机 VirtualHost 配置
  • 原文地址:https://www.cnblogs.com/insus/p/2986217.html
Copyright © 2011-2022 走看看