欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

不使用web服务(Service)实现文本框自动完成扩展

程序员文章站 2024-03-04 11:47:47
以前写ajax 的autocompleteextender功能,都需要写wcf service或是web service数据源。但一个系统中,很多文本框都想使用autoco...

以前写ajax 的autocompleteextender功能,都需要写wcf service或是web service数据源。但一个系统中,很多文本框都想使用autocomplete的功能。我们不可能写很多的service,比如一些较小的数据。我们是否有一个可替换的方法呢?这是肯定的。下面的演示,insus.net以不用写service来实现文本框的autocompete extender功能。

首先从数据库获取数,你可以写sql语句,或是写存储过程,以下是获取域用户信息,仿outlook输入收件人效果。

在[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 +'''')

在逻辑层,我们写一个类别,去与数据层交互:
复制代码 代码如下:

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
把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]

不使用web服务(Service)实现文本框自动完成扩展
效果:
不使用web服务(Service)实现文本框自动完成扩展