zoukankan      html  css  js  c++  java
  • 使用AutoCompleteExtender实现自动完成

    自动完成也不是什么新技术了,在一些较好的网站上都能看到其应用,下面就把代码贴出来(仅限跟我同一级别的菜鸟观看……老鸟请路过……

    需要一个WebService 我也懒得改名子,就直接叫WebService.asmx; 为什么要用WebService?  其实我也不太清楚,只知道AutoCompleteExtender需要三个最为关键的属性:

    1. ServicePath="WebService.asmx" 
    2. ServiceMethod="GetWordList"
    3. TargetControlID="txtText"

    如果知道这三个属性的话,也许就清楚为什么要用WebService了,ServicePath:就是WebService的路径,ServiceMethod:WebService中的方法名称,TargetControlID就是要对哪个控件实现自动完成效果(说的有点不清楚,但明白是什么意思就行了);

    代码如下:

    View Code
    using System;
    using System.Web.Services;
    using System.Data;
    using System.Data.SqlClient;
    using CommonUtility;


    namespace GridView入库单管理
    {
        
    /// <summary>
        
    /// WebService 的摘要说明
        
    /// </summary>
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo 
    = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(
    false)]
        
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
        [System.Web.Script.Services.ScriptService]
        
    public class WebService : System.Web.Services.WebService
        {
            [WebMethod]
            
    public String[] GetWordList(string prefixText, int count)
            {
                
    string sql = string.Format("select top {0} * from InBill where saleName like '%" + @prefixText + "%'", @count);

                SqlParameter[] paras 
    = new SqlParameter[]
                {
                    
    new SqlParameter("@prefixText",prefixText),
                     
    new SqlParameter("@count",count)
                };

                DataTable table 
    = SQLHelper.GetDateSet(sql, CommandType.Text, paras);
                
    string[] arr = new string[table.Rows.Count];
                
    if (table != null)
                {
                    
    for (int i = 0; i < table.Rows.Count; i++)
                    {
                        arr[i] 
    = table.Rows[i]["saleName"].ToString();
                    }
                }
                
    return arr;
            }
        }
    }

    SQL语句:在声名方法的时候,Count就是为了这个时候用的,AutoCompleteExtender 中加上CompletionSetCount="5" 的时候, 就有用了,它是什么意思?  他就是自动完成的时候,显示多少条数据用的,如果不写,默认是10;也就是说,下拉列表中会出现10条数据;如果定义完以后,在这里就可以将Count传进去了;

    string sql = string.Format("select top {0} * from InBill where saleName like '%" + @prefixText + "%'", @count);

    string[] arr = new string[table.Rows.Count];  //定义一个字符串类型的数组,让他的长度等于我们查出来的table的行数;紧接着就要遍历table,把每行的数据都填充到数组中去;

     arr[i] = table.Rows[i]["saleName"].ToString();  saleName是数据库中的字段名,你这里绑定的是哪个字段,自动完成的时候就会显示哪个字段的值;

    Aspx页面代码片段:

       <asp:ScriptManager ID="ScriptManager1" runat="server" />
            
    <asp:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" MinimumPrefixLength="1"
                CompletionInterval
    ="500" EnableCaching="false" ServiceMethod="GetWordList" ServicePath="WebService.asmx"
                TargetControlID
    ="txtText" CompletionSetCount="5" />
            
    <asp:TextBox ID="txtText" runat="server"></asp:TextBox>

    首先需要一个ScriptManager,这个是必须的,下面解释一下AutoCompleteExtender中各个属性的意思;

    MinimumPrefixLength :  就是最小输入几个字符的时候弹出自动完成;

    CompletionInterval:自动完成时间间隔;

    EnableCaching:是否启用缓存;

    ServiceMethod:WebService中的方法名称;

    ServicePath:WebService路径;

    TargetControlID:绑定的控件;

    CompletionSetCount:显示自动完成的行数;

    OK了,就这些代码,其实很简单,大家一起加油~    收工~~  晚安~


    --

  • 相关阅读:
    TransactSQL selectCourse storedprocedurestuSysInfo project form cmm
    TransactSQL insert触发器 游标遍历结果集
    css custome checkbox style in sench list
    在ipad的safari上使用Skype链接
    一个async和await 关键字的简单入门
    MVP模式
    c#静态变量和静态属性的区别
    异步延时启动
    C#中 托管线程的状态
    NLog实现归档日志且只保留一段时间的日志(比如一个星期)
  • 原文地址:https://www.cnblogs.com/zhuiyi/p/2060362.html
Copyright © 2011-2022 走看看