Ajax 模仿百度,google查询是模糊下拉 webservice

 


首现,做准备工作。建立一个WebService,这里面的代码如下:

[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();
            //这里是我在数据库中取数据的代码 其中SqlHelper类是项目中的取数据基类
            string strSql = string.Format("select top {0} tId,tJf from Table20100728 where tJf like '{1}%' order by tJf", count, prefixText);
            ds = SqlHelper.ExecuteDataSet(strSql);
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                list.Add(ds.Tables[0].Rows[i]["tJf"].ToString());
            }
            //for (int i = 0; i < count; i++)
            //{
            //list.Add(prefixText+i.ToString());
            //}
            return list.ToArray();
        }

记得引用命名空间:using System.Collections.Generic;

参数说明:

prefixText :用来作为模糊条件的关键字

count:指示文本框下拉显示几条数据

其中

// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
    [System.Web.Script.Services.ScriptService]

取消注释,否则无法调用

然后建立web页面 拖一个ScriptManager 和一个 文本框 进来

给文本框添加ajax扩展 AutoCompleteExtender

下面简单介绍下AutoCompleteExtender的属性

a,TargetControlID 这个属性是所有AjaxControlToolkit的共同属性,就是扩展目标控件ID(textbox的id)
b.CompletionSetCount 这个属性是设置显示下拉结果的条数 默认为10吧
c.MinimumPrefixTextLength 这个属性是设置输入几个字符的长度后调用webService中的方法显示下拉列表 d.ServicePath 这个属性设置需要调用的web Service路径
e.ServiceMethod 这个属性设置需要调用的web Service中的方法(函数)
f.EnableCaching:是否在客户端缓存数据,默认为true
g.CompletionInterval:从服务器读取数据的时间间隔,默认为1000,单位:毫秒 (建议设置为10)

下面给出的是 aspx页面代码

<asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <cc1:AutoCompleteExtender ID="TextBox1_AutoCompleteExtender" runat="server" MinimumPrefixLength="1"
            DelimiterCharacters="" Enabled="True" ServiceMethod="GetString" ServicePath="WebService1.asmx"
            TargetControlID="TextBox1" CompletionInterval="10">
        </cc1:AutoCompleteExtender>
        <cc1:AutoCompleteExtender ID="AutoCompleteExtender2" runat="server" MinimumPrefixLength="2"
            DelimiterCharacters="" Enabled="True" ServiceMethod="GetString" ServicePath="WebService1.asmx"
            TargetControlID="TextBox1" CompletionInterval="10">
        </cc1:AutoCompleteExtender>

黄色部分可有可无,如果你只关心第一个字符那么黄色部分就不用了,如果你想达到2级效果就把黄色部分加上,3级效果的 以此类推,请模仿黄色部分。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值