zl程序教程

您现在的位置是:首页 >  其它

当前栏目

ajaxControlToolkitAutoCompleteExtender的用法

用法
2023-06-13 09:14:03 时间
AutoCompleteExtender自动完成扩展,配合TextBox使用功能类似现在google中输入搜索字,则在TextBox下出来下拉框显示搜索目标中的项目
这个扩展控件需要配合WebService使用,所以涉及了点webService的使用(这里只简单谈下,等用熟了再仔细谈下webservice的内容)
先介绍下AutoCompleteExtender的几个关键属性:
a,TargetControlID这个属性是所有AjaxControlToolkit的共同属性,就是扩展目标控件ID(官方这么说的吧)
b.CompletionSetCount这个属性是设置显示下拉结果的条数默认为10吧
c.MinimumPrefixTextLength这个属性是设置输入几个字符的长度后调用webService中的方法显示下拉列表
d.ServicePath这个属性设置需要调用的webService路径
e.ServiceMethod这个属性设置需要调用的webService中的方法(函数)
f.EnableCaching:是否在客户端缓存数据,默认为true
g.CompletionInterval:从服务器读取数据的时间间隔,默认为1000,单位:毫秒
注:如果习惯用可视控件设置属性,则a属性在AutoCompleteExtender中设置,其他属性则设置了TargetControlId后,在相应的TargetControl中会多出来个Extenders属性中设置,如果习惯手写代码,则在AutoCompleteExtender代码属性中设置。
例子:1.新建一个页面,加入ScriptManager控件一个TextBox控件一个AutoCompleteExtender控件
2.新建立一个webService,添加一个[WebMethod]方法
[WebMethod] 
复制代码代码如下:

publicstring[]GetString(stringprefixText,intcount){
System.Collections.Generic.List<string>list=newSystem.Collections.Generic.List<string>(count);
System.Data.DataSetds=newSystem.Data.DataSet();
//这里是我在数据库中取数据的代码其中SqlHelper类是项目中的取数据基类
//stringstrSql=string.Format("SELECTTOP{0}NAMEFROMCengWeiWHERENAMELIKE"{1}%"ORDERBYNAME",count,prefixText);
//ds=SqlHelper.Query(strSql);
//for(inti=0;i<ds.Tables[0].Rows.Count;i++)
//{
//list.Add(ds.Tables[0].Rows[i][0].ToString());
//}
for(inti=0;i<count;i++)
{
list.Add(prefixText+i.ToString());
}
returnlist.ToArray();
}

其中:必须在webService的类上面添加
[System.Web.Script.Services.ScriptService]
示例代码:webService是在数据库中的一个字段中取数据
页面代码: 
复制代码代码如下:

<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="test2.aspx.cs"Inherits="test2"%>
<%@RegisterAssembly="CrystalDecisions.Web,Version=10.2.3600.0,Culture=neutral,PublicKeyToken=692fbea5521e1304"
Namespace="CrystalDecisions.Web"TagPrefix="CR"%>
<%@RegisterAssembly="AjaxControlToolkit"Namespace="AjaxControlToolkit"TagPrefix="cc1"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>DropDownExtender简单练习</title>
<linkhref="/aspnet_client/System_Web/2_0_50727/CrystalReportWebFormViewer3/css/default.css"
rel="stylesheet"type="text/css"/>
</head>
<body>
<formid="form1"runat="server">
<div>
<asp:ScriptManagerID="ScriptManager1"runat="server"EnableScriptGlobalization="True"EnableScriptLocalization="True">
</asp:ScriptManager>
<asp:TextBoxID="TextBox3"runat="server"></asp:TextBox>
<asp:TextBoxID="TextBox4"runat="server"></asp:TextBox>
<cc1:AutoCompleteExtenderID="AutoCompleteExtender2"runat="server"MinimumPrefixLength="1"
ServiceMethod="GetString"ServicePath="AutoComplete.asmx"TargetControlID="TextBox2">
</cc1:AutoCompleteExtender>
</form>
</body>
</html>

webService代码:
usingSystem;
usingSystem.Web;
usingSystem.Collections;
usingSystem.Web.Services;
usingSystem.Web.Services.Protocols;
///<summary>
///AutoComplete的摘要说明
///</summary>
[WebService(Namespace="http://tempuri.org/")]
[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
//下面是必须的,否则功能无法实现
[System.Web.Script.Services.ScriptService]
publicclassAutoComplete:System.Web.Services.WebService{
publicAutoComplete(){
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
publicstringHelloWorld(){
return"HelloWorld";
}
[WebMethod]
publicstring[]GetString(stringprefixText,intcount){
System.Collections.Generic.List<string>list=newSystem.Collections.Generic.List<string>(count);
System.Data.DataSetds=newSystem.Data.DataSet();
//这里是我在数据库中取数据的代码其中SqlHelper类是项目中的取数据基类
//stringstrSql=string.Format("SELECTTOP{0}NAMEFROMCengWeiWHERENAMELIKE"{1}%"ORDERBYNAME",count,prefixText);
//ds=SqlHelper.Query(strSql);
//for(inti=0;i<ds.Tables[0].Rows.Count;i++)
//{
//list.Add(ds.Tables[0].Rows[i][0].ToString());
//}
for(inti=0;i<count;i++)
{
list.Add(prefixText+i.ToString());
}
returnlist.ToArray();
}
}
有哪里不对的地方还请大家指教