AutoCompleteExtender控制項可以幫你自動填寫TextBox控制項(在資料庫中尋找).
屬性:
TarGetControlID:指定要讓"自動輸入完成"擴充器要擴充的TextBox控制項ID.
ServicePath:Web服務的位置路徑.
ServiceMehod:要調用的Web服務的方法名.方法簽名如下:
[System.Web.Services.WebMethod]
[System.Web.Script.Service.ScriptMethod]
public string[] GetCompetionList(string prefixText,int count){......}
前台代碼:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<cc1:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" TargetControlID="TextBox1"
MinimumPrefixLength="1" ServiceMethod="GetProductName" ServicePath="WebService.asmx">
</cc1:AutoCompleteExtender>
</div>
</form>
</body>
</html>
WebService代碼:
using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Data;
using System.Data.SqlClient;
using System.Web.Script.Services;//關鍵程式集引用
using System.Collections.Generic;//關鍵程式集引用
/// <summary>
/// WebService 的摘要說明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService()]//一定要添加
public class WebService : System.Web.Services.WebService {
public WebService () {
//如果使用設計的組件,請取消注釋以下行
//InitializeComponent();
}
[WebMethod]
[ScriptMethod]
public string[] GetProductName(string prefixText, int count)
{
List<string> suggestions=new List<string>();//聲明一泛型集合
SqlConnection con = new SqlConnection("server=.;database=NorthWind;uid=sa;pwd=;");
con.Open();
SqlCommand com = new SqlCommand("select distinct productname from Products where productname like @prefixname order by productname", con);
com.Parameters.Add("@prefixname",SqlDbType.NVarChar).Value=prefixText + "%";
SqlDataReader sdr = com.ExecuteReader();
while (sdr.Read())
{
suggestions.Add(sdr.GetString(0));
}
sdr.close();
con.close();
return suggestions.ToArray();
}
}
這個控制項還是比較有用的。我們使用搜尋引擎時,輸入幾個字元時,可以出來相關的文字提示,應該是Ajax的這種技術的應用吧。可以協助使用者快速挑選出針對TextBox自己要輸入的內容,減少輸入工作。
AutoCompleteExtender控制項的屬性:
1.TargetControlID:指定將被輔助完成自動輸入的控制項ID,這裡的控制項只能是TextBox;
2.ServicePath:指出提供服務的WEB服務路徑,若不指出則ServiceMethod表示本頁面對應的方法名;
3.ServiceMethod:指出提供服務的方法名;
4.MinimumPrefixLength:指出開始提供提示服務時,TextBox控制項應有的最小字元數,預設為3;
5.CompletionSetCount:顯示的條數,預設為10;
6.EnableCaching:是否在用戶端快取資料,預設為true;
7.CompletionInterval:從伺服器讀取資料的時間間隔,預設為1000,單位:毫秒。
凡是為AutoCompleteExtender控制項提供服務的方法都必需完全滿足以下三個條件:
A.方法的傳回型別必需為:string [];
B.方法的傳入參數類型必需為:string , int;
C.兩個傳入參數名必需為:prefixText , count。
本文轉載自:http://daweijsp.javaeye.com/blog/398446,http://jialeifei.blog.163.com/blog/static/22190126200911810431891/