加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

类似百度搜索时的模糊查询

发布时间:2020-12-17 01:04:43 所属栏目:安全 来源:网络整理
导读:? AutoCompleteExtender提供了类似百度的模糊查询列表 小弟使用它搞了一个“根据用户已经输入的内容”列表中列出从数据库中获得模糊查询的需求(由于刚开始接触Js,大家体谅了啊) 仅仅是上面的结果 也就不卖弄了 网上有很多 关键在于我从列表中获得的结果需
?

AutoCompleteExtender提供了类似百度的模糊查询列表

小弟使用它搞了一个“根据用户已经输入的内容”列表中列出从数据库中获得模糊查询的需求(由于刚开始接触Js,大家体谅了啊)

仅仅是上面的结果 也就不卖弄了 网上有很多 关键在于我从列表中获得的结果需要经过处理 放到文本框中 呵呵? 其它的不说了 具体看代码吧

总体来说有两个扩展需求:

1.一个界面中放两个这样的东东,如果直接放得话 其中一个会不起作用 尤其是放到GridView中的编辑模板中,找这个ID就很难了

2.在提示框中选择了一项后 需要把该项处理后放到文本框中

封装了一个用户控件 如下:

界面

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Mytxt.ascx.cs" Inherits="WebMemberManage.WebUserControl.Mytxt" %>

<script type="text/javascript">
                                                     
   function  itemSelected(source,eventArgs)
   {
     var txtManager =  document.getElementById(source.get_element().id); //获得当前编辑的对象
     txtManager.value=txtManager.value.split('(')[0]; 
     var a=document.getElementById("<%=lkb_Submit.ClientID %>"); 
     if(a==null)
     {
       return;
     }
     a.click();
     
   }        
                               
</script>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:TextBox ID="txtManager" runat="server" Width="350px"></asp:TextBox>
        <asp:LinkButton
            ID="lkb_Submit" runat="server" onclick="lkb_Click"></asp:LinkButton>
        <cc1:AutoCompleteExtender ID="txtManager_AutoCompleteExtender" runat="server" TargetControlID="txtManager"
            ServicePath="~/MyWebService.asmx" ServiceMethod="GetSimilarMemberByName" MinimumPrefixLength="1"
            CompletionSetCount="10" EnableCaching="true" CompletionInterval="5" OnClientItemSelected="itemSelected">
        </cc1:AutoCompleteExtender>
    </ContentTemplate>
</asp:UpdatePanel>

界面代码

using System;

namespace WebMemberManage.WebUserControl
{
    public delegate void MyDel();

    [System.Web.Script.Services.ScriptService]
    public partial class Mytxt : System.Web.UI.UserControl
    {
        /// <summary>
        /// 选择完成后触发的事件
        /// </summary>
        public event MyDel GetText;

        protected void lkb_Click(object sender,EventArgs e)
        {
            if (GetText != null)
                GetText();
        }

        protected void Page_Load(object sender,EventArgs e)
        {

        }
        public string Text
        {
            get
            {
                return txtManager.Text;
            }
            set
            {
                txtManager.Text = value;
            }
        }

      
    }
}

Webservice代码

 [WebService(Namespace = "MemberManager")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(false)]
    // 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 MyWebService : System.Web.Services.WebService
    {
        [WebMethod]
        public List<string> GetSimilarMemberByName(string prefixText,int count)
        {
            List<string> result = new List<string>();
            BLLUser bllUser = new BLLUser();
            DataTable table = bllUser.GetSimilarMemberByName(prefixText,count);
            foreach (DataRow item in table.Rows)
            {
                result.Add(item["name"].ToString());
            }
            return result;
        }
    }

不过由于AjaxControlToolkit控件库中的东西在界面每次回传的时候 都Dispose了
所以在使用处 需要每次回发都要订制一遍
使用处?? 封装好的用户控件的id就叫做Mytxt1

 protected void Page_Load(object sender,EventArgs e)
        {
            if (!IsPostBack)
            {
               //首次加载的时候  绑定的方法
            }
               Mytxt1.GetText += new WebMemberManage.WebUserControl.MyDel(Mytxt1_GetText);
        }

        void Mytxt1_GetText()
        {
            //具体的绑定方法
        }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读