zoukankan      html  css  js  c++  java
  • AjaxControlToolkit AutoCompleteExtender控件演示

    原本程序是一个查询文本框,现用户要求改程序,要如google或baidu输入一样,有自动完成功能。下图是已经完成的效果:

    实现使用了Web Service技术与Ajax的AutoCompleteExtender的控件。在数据库中,写好存储过程:

    usp_Fqa_LotNumberCompletionList
    CREATE PROCEDURE [dbo].[usp_Fqa_LotNumberCompletionList]
    (
        
    @PrefixText NVARCHAR(4000),
        
    @TopCount INT
    )
    AS    
    DECLARE @W NVARCHAR(4000= @PrefixText + '%'
    EXECUTE('SELECT TOP ' + @TopCount + ' [LotNumber] FROM [dbo].[Fqa] WHERE [IsSubmit] = 1 AND [LotNumber] LIKE ''' + @w +'''')

    创建一个Web Service,执行存储过程:

    FqaLotNumberService
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Services;

    /// <summary>
    /// Summary description for FqaLotNumberService
    /// </summary>
    namespace Insus.NET
    {
        [WebService(Description 
    = "Fqa Lot Number Service", Name = "FqaLotNumberService", Namespace = http://xxx.xxx.com/WebServices/)]

        [WebServiceBinding(ConformsTo 
    = WsiProfiles.BasicProfile1_1)]
        
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
        [System.Web.Script.Services.ScriptService]
        
    public class FqaLotNumberService : System.Web.Services.WebService
        {
            BusinessBase objBusinessBase 
    = new BusinessBase();

            
    public FqaLotNumberService()
            {
                
    //Uncomment the following line if using designed components 
                
    //InitializeComponent(); 
            }

            [WebMethod]
            
    public string[] GetFqaLotNumber(string prefixText, int count)
            {
                Parameter[] parameter 
    = { 
                                        
    new Parameter ("@PrefixText",SqlDbType.NVarChar,4000,prefixText),
                                        
    new Parameter ("@TopCount",SqlDbType.Int,4,count)
                                    };
                DataTable LotNumberTable 
    = objBusinessBase.GetDataToDataSet("usp_Fqa_LotNumberCompletionList", parameter).Tables[0];

                ArrayList array 
    = new ArrayList();
                
    foreach (DataRow dataRow in LotNumberTable.Rows)
                {
                    array.Add(dataRow[
    "LotNumber"].ToString());
                }

                
    return (string[])array.ToArray(typeof(string));
            }
        }
    }


    上面的Web Service中,你会看到一个类别BusinessBase,可以从下面地址下载:http://www.cnblogs.com/insus/articles/1654653.html

    .aspx:

    View Code
     批号:<asp:TextBox ID="txtLotNumber" runat="server"></asp:TextBox>&nbsp;&nbsp;
                
    <asp:Button ID="ButtonSearch" runat="server" OnClick="ButtonSearch_Cliek" Text="Search" />
                
    <ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" MinimumPrefixLength="1"
                    TargetControlID
    ="txtLotNumber" ServiceMethod="GetFqaLotNumber" ServicePath="~/WebServices/FqaLotNumberService.asmx"
                    CompletionSetCount
    ="10">
                
    </ajaxToolkit:AutoCompleteExtender>


    实现过程中,Ajax AutoCompleteExtender控件,只能使用本域的Service,不能跨域,此问题Insus.NET花上不少时间测试。原本Service是摆放在一个单独的Web Service的站点上的,取不到数据,只能把Service移至本站点中来。

  • 相关阅读:
    Android中LayoutInflater的使用
    m2014-architecture-webserver->百万记录级mysql数据库及Discuz!论坛优化
    m2014-architecture-imgserver->利用Squid反向代理搭建CDN缓存服务器加快Web访问速度
    m2014-architecture-imgserver->Lighttpd +mod_mem_cache的效果简直太好了
    m2014-architecture-imgserver->配置lighttpd mod_mem_cache 模块做静态资源服务器
    m2014-architecture-imgserver->Lighttpd Mod_Cache很简单很强大的动态缓存
    雅虎十四条
    java高新技术-基本数据类型拆装箱及享元设计模式
    java高新技术-可变参数与OverLoad相关面试题分析
    java高新技术-java5的静态导入与编译器语法设置
  • 原文地址:https://www.cnblogs.com/insus/p/2108172.html
Copyright © 2011-2022 走看看