AutoComplete控件


AutoComplete控件的作用是根据用户在文本框输入的字符而做出相应的提示效果。例如GOOGLE搜索提示功能。
属性列表:
TargetControlID:要实现提示功能的控件
ServicePath:WEB服务的路径
ServiceMethod:调用数据使用的方法
CompletionSetCount:提示数据的行数
MinimumPrefixLength:用户输入多少字母才出现提示效果
CompletionInterval:从服务器获取数据的时间间隔,单位为毫秒
Enabled:是否启用自动完成功能,默认为TRUE
EnableCaching:是否启用缓存

实例解析一、读取数据库实现自动完成功能

autocomplete表:ID,NAME两个字段。

Default.aspx代码如下:

<head runat="server">
    <title>AutoComplete的使用</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>   
    </div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <cc1:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" TargetControlID="TextBox1" ServicePath="WebServiceAutoComplete.asmx" ServiceMethod="GetCompleteDepart" CompletionSetCount="2" MinimumPrefixLength="1"
         CompletionInterval="1000">
        </cc1:AutoCompleteExtender>
    </form>
</body>

WebServiceAutoComplete.asmx.cs文件代码如下:

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.Configuration;
.....
.....
[System.Web.Script.Services.ScriptService]
public class WebServiceAutoComplete : System.Web.Services.WebService {

.....
.....
    //定义数组
    private static string[] autoCompleteWordList = null;
    [WebMethod]
    public string[] GetCompleteDepart(string prefixText, int count)
    {
        //如果数组为空
        if (autoCompleteWordList == null)
        {
            DAL.DB DBOperator = new DAL.DB();
            DataSet ds = DBOperator.GetDs("select name from autocomplete where name like '"+prefixText+"%' order by name");
            //填充数组
            string[] temp=new string[ds.Tables[0].Rows.Count];
            int i = 0;
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                temp[i] = dr["name"].ToString();
                i++;
            }
            //将临时数组的内容赋给返回数组
            autoCompleteWordList = temp;
        }
        string[] returnValue = new string[count];
        returnValue = autoCompleteWordList;
        //返回
        return returnValue;
    }   
}

posted @ 2007-11-11 01:07  Astar  阅读(1383)  评论(2编辑  收藏  举报