ajaxControlToolkit AutoCompleteExtender的用法
更新時(shí)間:2008年10月30日 14:22:01 作者:
昨天在搜索中使用了這個(gè)控件,不過(guò)不知道為什么在IE中反應(yīng)比較慢
AutoCompleteExtender 自動(dòng)完成擴(kuò)展, 配合TextBox使用功能類(lèi)似現(xiàn)在google中輸入搜索字,則在TextBox下出來(lái)下拉框顯示搜索目標(biāo)中的項(xiàng)目
這個(gè)擴(kuò)展控件需要配合Web Service使用,所以涉及了點(diǎn)web Service的使用(這里只簡(jiǎn)單談下,等用熟了再仔細(xì)談下web service的內(nèi)容)
先介紹下AutoCompleteExtender的幾個(gè)關(guān)鍵屬性:
a,TargetControlID 這個(gè)屬性是所有AjaxControlToolkit的共同屬性,就是擴(kuò)展目標(biāo)控件ID(官方這么說(shuō)的吧)
b.CompletionSetCount 這個(gè)屬性是設(shè)置顯示下拉結(jié)果的條數(shù) 默認(rèn)為10吧
c.MinimumPrefixTextLength 這個(gè)屬性是設(shè)置輸入幾個(gè)字符的長(zhǎng)度后調(diào)用webService中的方法顯示下拉列表
d.ServicePath 這個(gè)屬性設(shè)置需要調(diào)用的web Service路徑
e.ServiceMethod 這個(gè)屬性設(shè)置需要調(diào)用的web Service中的方法(函數(shù))
f.EnableCaching:是否在客戶(hù)端緩存數(shù)據(jù),默認(rèn)為true
g.CompletionInterval:從服務(wù)器讀取數(shù)據(jù)的時(shí)間間隔,默認(rèn)為1000,單位:毫秒
注:如果習(xí)慣用可視控件設(shè)置屬性,則a屬性在AutoCompleteExtender中設(shè)置,其他屬性則設(shè)置了TargetControlId后,在相應(yīng)的TargetControl中會(huì)多出來(lái)個(gè)Extenders屬性中設(shè)置,如果習(xí)慣手寫(xiě)代碼,則在AutoCompleteExtender代碼屬性中設(shè)置。
例子: 1.新建一個(gè)頁(yè)面,加入ScriptManager控件 一個(gè)TextBox控件 一個(gè)AutoCompleteExtender控件
2.新建立一個(gè)webService,添加一個(gè)[WebMethod]方法
[WebMethod]
public string[] GetString(string prefixText, int count){
System.Collections.Generic.List<string> list = new System.Collections.Generic.List<string>(count);
System.Data.DataSet ds = new System.Data.DataSet();
//這里是我在數(shù)據(jù)庫(kù)中取數(shù)據(jù)的代碼 其中SqlHelper類(lèi)是項(xiàng)目中的取數(shù)據(jù)基類(lèi)
//string strSql = string.Format("SELECT TOP {0} NAME FROM CengWei WHERE NAME LIKE '{1}%' ORDER BY NAME",count,prefixText);
//ds = SqlHelper.Query(strSql);
//for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
//{
// list.Add(ds.Tables[0].Rows[i][0].ToString());
//}
for (int i = 0; i < count; i++)
{
list.Add(prefixText+i.ToString());
}
return list.ToArray();
}
其中:必須在webService的類(lèi)上面添加
[System.Web.Script.Services.ScriptService]
示例代碼:webService是在數(shù)據(jù)庫(kù)中的一個(gè)字段中取數(shù)據(jù)
頁(yè)面代碼:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test2.aspx.cs" Inherits="test2" %>
<%@ Register Assembly="CrystalDecisions.Web, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"
Namespace="CrystalDecisions.Web" TagPrefix="CR" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>DropDownExtender簡(jiǎn)單練習(xí)</title>
<link href="/aspnet_client/System_Web/2_0_50727/CrystalReportWebFormViewer3/css/default.css"
rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptGlobalization="True" EnableScriptLocalization="True">
</asp:ScriptManager>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
<cc1:AutoCompleteExtender ID="AutoCompleteExtender2" runat="server" MinimumPrefixLength="1"
ServiceMethod="GetString" ServicePath="AutoComplete.asmx" TargetControlID="TextBox2">
</cc1:AutoCompleteExtender>
</form>
</body>
</html>
webService代碼:
using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
/// <summary>
/// AutoComplete 的摘要說(shuō)明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//下面是必須的,否則功能無(wú)法實(shí)現(xiàn)
[System.Web.Script.Services.ScriptService]
public class AutoComplete : System.Web.Services.WebService {
public AutoComplete () {
//如果使用設(shè)計(jì)的組件,請(qǐng)取消注釋以下行
//InitializeComponent();
}
[WebMethod]
public string HelloWorld() {
return "Hello World";
}
[WebMethod]
public string[] GetString(string prefixText, int count){
System.Collections.Generic.List<string> list = new System.Collections.Generic.List<string>(count);
System.Data.DataSet ds = new System.Data.DataSet();
//這里是我在數(shù)據(jù)庫(kù)中取數(shù)據(jù)的代碼 其中SqlHelper類(lèi)是項(xiàng)目中的取數(shù)據(jù)基類(lèi)
//string strSql = string.Format("SELECT TOP {0} NAME FROM CengWei WHERE NAME LIKE '{1}%' ORDER BY NAME",count,prefixText);
//ds = SqlHelper.Query(strSql);
//for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
//{
// list.Add(ds.Tables[0].Rows[i][0].ToString());
//}
for (int i = 0; i < count; i++)
{
list.Add(prefixText+i.ToString());
}
return list.ToArray();
}
}
有哪里不對(duì)的地方還請(qǐng)大家指教
這個(gè)擴(kuò)展控件需要配合Web Service使用,所以涉及了點(diǎn)web Service的使用(這里只簡(jiǎn)單談下,等用熟了再仔細(xì)談下web service的內(nèi)容)
先介紹下AutoCompleteExtender的幾個(gè)關(guān)鍵屬性:
a,TargetControlID 這個(gè)屬性是所有AjaxControlToolkit的共同屬性,就是擴(kuò)展目標(biāo)控件ID(官方這么說(shuō)的吧)
b.CompletionSetCount 這個(gè)屬性是設(shè)置顯示下拉結(jié)果的條數(shù) 默認(rèn)為10吧
c.MinimumPrefixTextLength 這個(gè)屬性是設(shè)置輸入幾個(gè)字符的長(zhǎng)度后調(diào)用webService中的方法顯示下拉列表
d.ServicePath 這個(gè)屬性設(shè)置需要調(diào)用的web Service路徑
e.ServiceMethod 這個(gè)屬性設(shè)置需要調(diào)用的web Service中的方法(函數(shù))
f.EnableCaching:是否在客戶(hù)端緩存數(shù)據(jù),默認(rèn)為true
g.CompletionInterval:從服務(wù)器讀取數(shù)據(jù)的時(shí)間間隔,默認(rèn)為1000,單位:毫秒
注:如果習(xí)慣用可視控件設(shè)置屬性,則a屬性在AutoCompleteExtender中設(shè)置,其他屬性則設(shè)置了TargetControlId后,在相應(yīng)的TargetControl中會(huì)多出來(lái)個(gè)Extenders屬性中設(shè)置,如果習(xí)慣手寫(xiě)代碼,則在AutoCompleteExtender代碼屬性中設(shè)置。
例子: 1.新建一個(gè)頁(yè)面,加入ScriptManager控件 一個(gè)TextBox控件 一個(gè)AutoCompleteExtender控件
2.新建立一個(gè)webService,添加一個(gè)[WebMethod]方法
[WebMethod]
復(fù)制代碼 代碼如下:
public string[] GetString(string prefixText, int count){
System.Collections.Generic.List<string> list = new System.Collections.Generic.List<string>(count);
System.Data.DataSet ds = new System.Data.DataSet();
//這里是我在數(shù)據(jù)庫(kù)中取數(shù)據(jù)的代碼 其中SqlHelper類(lèi)是項(xiàng)目中的取數(shù)據(jù)基類(lèi)
//string strSql = string.Format("SELECT TOP {0} NAME FROM CengWei WHERE NAME LIKE '{1}%' ORDER BY NAME",count,prefixText);
//ds = SqlHelper.Query(strSql);
//for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
//{
// list.Add(ds.Tables[0].Rows[i][0].ToString());
//}
for (int i = 0; i < count; i++)
{
list.Add(prefixText+i.ToString());
}
return list.ToArray();
}
其中:必須在webService的類(lèi)上面添加
[System.Web.Script.Services.ScriptService]
示例代碼:webService是在數(shù)據(jù)庫(kù)中的一個(gè)字段中取數(shù)據(jù)
頁(yè)面代碼:
復(fù)制代碼 代碼如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test2.aspx.cs" Inherits="test2" %>
<%@ Register Assembly="CrystalDecisions.Web, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"
Namespace="CrystalDecisions.Web" TagPrefix="CR" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>DropDownExtender簡(jiǎn)單練習(xí)</title>
<link href="/aspnet_client/System_Web/2_0_50727/CrystalReportWebFormViewer3/css/default.css"
rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptGlobalization="True" EnableScriptLocalization="True">
</asp:ScriptManager>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
<cc1:AutoCompleteExtender ID="AutoCompleteExtender2" runat="server" MinimumPrefixLength="1"
ServiceMethod="GetString" ServicePath="AutoComplete.asmx" TargetControlID="TextBox2">
</cc1:AutoCompleteExtender>
</form>
</body>
</html>
webService代碼:
using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
/// <summary>
/// AutoComplete 的摘要說(shuō)明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//下面是必須的,否則功能無(wú)法實(shí)現(xiàn)
[System.Web.Script.Services.ScriptService]
public class AutoComplete : System.Web.Services.WebService {
public AutoComplete () {
//如果使用設(shè)計(jì)的組件,請(qǐng)取消注釋以下行
//InitializeComponent();
}
[WebMethod]
public string HelloWorld() {
return "Hello World";
}
[WebMethod]
public string[] GetString(string prefixText, int count){
System.Collections.Generic.List<string> list = new System.Collections.Generic.List<string>(count);
System.Data.DataSet ds = new System.Data.DataSet();
//這里是我在數(shù)據(jù)庫(kù)中取數(shù)據(jù)的代碼 其中SqlHelper類(lèi)是項(xiàng)目中的取數(shù)據(jù)基類(lèi)
//string strSql = string.Format("SELECT TOP {0} NAME FROM CengWei WHERE NAME LIKE '{1}%' ORDER BY NAME",count,prefixText);
//ds = SqlHelper.Query(strSql);
//for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
//{
// list.Add(ds.Tables[0].Rows[i][0].ToString());
//}
for (int i = 0; i < count; i++)
{
list.Add(prefixText+i.ToString());
}
return list.ToArray();
}
}
有哪里不對(duì)的地方還請(qǐng)大家指教
相關(guān)文章
處理JavaScript值為undefined的7個(gè)小技巧
這篇文章主要介紹了處理JavaScript值為undefined的7個(gè)小技巧,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07用javascript代替marquee的滾動(dòng)字幕效果代碼
用javascript代替marquee的滾動(dòng)字幕效果代碼...2007-04-04js判斷鼠標(biāo)同時(shí)離開(kāi)兩個(gè)div的思路及代碼
js判斷鼠標(biāo)同時(shí)離開(kāi)兩個(gè)div想了好長(zhǎng)時(shí)間終于出爐了,下面與大家分享下具體的實(shí)現(xiàn)代碼,感興趣的朋友可以參考下啊2013-05-05

JavaScript 報(bào)表展示實(shí)現(xiàn)代碼
以下是從網(wǎng)上找到的一段JavaScript實(shí)現(xiàn)圖形報(bào)表的代碼,對(duì)于想客戶(hù)端顯示報(bào)表的朋友可以參考下。
2009-12-12 
javaScript對(duì)文字按照拼音排序?qū)崿F(xiàn)代碼
這篇文章主要介紹了javaScript對(duì)文字按照拼音排序?qū)崿F(xiàn)代碼,有需要的朋友可以參考一下
2013-12-12 
JavaScript變量作用域及內(nèi)存問(wèn)題實(shí)例分析
這篇文章主要介紹了JavaScript變量作用域及內(nèi)存問(wèn)題,結(jié)合實(shí)例形式分析了javascript全局變量、局部變量、塊級(jí)作用域等概念及內(nèi)存優(yōu)化問(wèn)題相關(guān)操作技巧,需要的朋友可以參考下
2019-06-06