体验AJAX Toolkit新控件:AutoCompleteExtender

  AutoCompleteExtender控件,固名思义就是可以辅助TextBox控件自动输入,实现如http://dict.yodao.com/这样的效果。

  AutoCompleteExtender控件的属性:
   1.TargetControlID:指定将被辅助完成自动输入的控件ID,这里的控件只能是TextBox;
   2.ServicePath:指出提供服务的WEB服务路径,若不指出则ServiceMethod表示本页面对应的方法名;
   3.ServiceMethod:指出提供服务的方法名;
   4.MinimumPrefixLength:指出开始提供提示服务时,TextBox控件应有的最小字符数,默认为3;
   5.CompletionSetCount:显示的条数,默认为10;
   6.EnableCaching:是否在客户端缓存数据,默认为true;
   7.CompletionInterval:从服务器读取数据的时间间隔,默认为1000,单位:毫秒。

  ASPX页面代码:

<body>
    
<form id="form1" runat="server">
        
<asp:ScriptManager runat="server" ID="ScriptManager1" />
        
<ajaxToolkit:AutoCompleteExtender 
            
ID="AutoCompleteExtender1" 
            runat
="server"
            ServicePath
="AutoComplete.asmx"
            TargetControlID
="TextBox1" 
            ServiceMethod
="GetTextString">
        
</ajaxToolkit:AutoCompleteExtender>
        
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    
</form>    
</body>

  WebServcie-AutoComplete.cs代码:
using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;


[WebService(Namespace 
= "http://tempuri.org/")]
[WebServiceBinding(ConformsTo 
= WsiProfiles.BasicProfile1_1)]

[System.Web.Script.Services.ScriptService]

public class AutoComplete : System.Web.Services.WebService {

    
public AutoComplete () {
    }


    [WebMethod]
    
public string[] GetTextString(string prefixText, int count)
    
{
        
string[] strArray = new string[count];

        
for (int i = 0; i < count; i++)
        
{
            strArray[i] 
= prefixText + i.ToString();
        }


        
return strArray;
    }

}
  在这里需要注意以下几点:
   1.由于该WEB服务是为Ajax框架提供服务的,因此在类声明之前得加上属性声明:
     [System.Web.Script.Services.ScriptService]
   2.特别需要注意的是GetTextString这个方法。凡是为AutoCompleteExtender控件提供服务的方法都必需完全满足以下三个条件:
     A.方法的返回类型必需为:string [];
     B.方法的传入参数类型必需为:string  ,   int;
     C.两个传入参数名必需为:prefixText  ,  count。
posted @ 2007-01-27 21:56 jailu 阅读(1858) 评论(18)  编辑 收藏 所属分类: AJAX

  回复  引用  查看    
#1楼 2007-01-28 03:30 | Jeffrey Zhao      
不很好用,样式太少……
  回复  引用    
#2楼 2007-01-29 15:52 | 苏cat [未注册用户]
8实用,速度太慢 拉
  回复  引用    
#3楼 2007-01-30 09:11 | 朱朱 [未注册用户]
感觉一般
  回复  引用  查看    
#4楼 [楼主]2007-01-30 09:51 | jailu      
看来大伙都对这个控件不满意啊~
  回复  引用    
#5楼 2007-04-17 13:22 | coco [未注册用户]
不提供服务的WEB服务路径,怎么调用本页面的方法
  回复  引用    
#6楼 2007-07-19 22:42 | 小孬 [未注册用户]
用IE速度没有用FIREFOX速度快
  回复  引用    
#7楼 2007-07-19 22:43 | 小孬 [未注册用户]
就是不知道怎么调整样式:(
  回复  引用  查看    
#8楼 2007-08-13 16:14 | Anthan      
WebService必须返回数组吗?
返回List可以吗?
  回复  引用  查看    
#9楼 [楼主]2007-08-13 16:15 | jailu      
@Anthan
A.方法的返回类型必需为:string [];
  回复  引用  查看    
#10楼 2007-09-06 11:15 | zjw2004112      
你好,假设我前面有一个DropDownList下拉框条件,也就是说根据不同的条件提示自己相应的提示值,这要怎么做要,

感觉现在只提供了一个 TextBox值
  回复  引用  查看    
#11楼 2007-09-27 15:35 | panzhenyu      
如何调用aspx页面,而不是调用WebService
  回复  引用  查看    
#12楼 2007-09-28 22:26 | Campagnia Te      
HO~~
  回复  引用    
#13楼 2007-10-08 16:27 | cmsoft [未注册用户]
 B.方法的传入参数类型必需为:string , int;
 C.两个传入参数名必需为:prefixText , count。
这两个不是必须条件~~

  回复  引用    
#14楼 2007-10-08 17:32 | 未注册的用户 [未注册用户]
CompletionSetCount这个属性不设置,count这一参数有何意义?

故B,C两点中的int count这个参数可以去掉
  回复  引用    
#15楼 2008-06-12 14:28 | ycyaosir [未注册用户]
上文说得,传入的参数类型必须为;string,int;
两个参数名必须为:prefixText,count.
我遇到的问题就是这样,参数必须是这个prefixText,改成其他的还真的不行?
那到底为什么呢?连变量的名都要相同呢,不加参数是可以的,太奇怪了,第一次遇到这样的情况!!
  回复  引用    
#16楼 2008-06-12 14:29 | ycyaosir [未注册用户]
希望博主联系我讨论下这个问题
  回复  引用    
#17楼 2008-06-18 11:12 | -1677278475 [未注册用户]
return strArray 我返回的值太长、结果成 -1677278475 了、、无奈

  回复  引用    
#18楼 2008-06-30 10:09 | Johnson.ding [未注册用户]
第一次加载的时候,如果速度比较快,文本框里只显示 输入的值,
举个例子:“100-100-Name", 你输入100后,下拉框里内容清空了,
只有100,不能选了。第二次就没问题


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: