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移至本站点中来。

  • 相关阅读:
    LeetCode 35 搜索插入位置
    LeetCode 69 x 的平方根
    LeetCode 61 旋转链表
    LeetCode 876 链表的中间结点
    LeetCode 142 环形链表 II
    LeetCode 206 反转链表
    LeetCode 237 删除链表中的节点
    LeetCode 83 删除排序链表中的重复元素
    元素的隐藏与显示与判断 js jquery aspx.cs
    判断对象是否为空 js与Jquery区别
  • 原文地址:https://www.cnblogs.com/insus/p/2108172.html
Copyright © 2011-2022 走看看