asp.net 自动完成下拉菜单,并依据输入的内容 从数据库里查找该行其他字段 并填充进相应的web控件里。
谢谢。

解决方案 »

  1.   

    http://www.zhiweinet.com/jiaocheng/2008-06/721p2.htm
      

  2.   

    前台页面:<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="HotKeyTest.aspx.cs" Inherits="Test.HotKeyTest" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>搜索建议Demo</title>    <script language="javascript" type="text/javascript" src="jquery-1.4.2.js"></script>    <%if (false)
          { %>    <script type="text/javascript" src="jquery-1.4.2-vsdoc.js"></script>    <%} %>
        <style type="text/css">
            .CInput
            {
                border: solid 1px gray;
                width: 300px;
            }
            #divSuggestions
            {
                border: solid 1px gray;
                width: 300px;
                background: #fff;
                display: none;
            }
            #divSuggestions span
            {
                display: block;
                padding: 3px;
            }
        </style>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <h1>
                搜索建议</h1>
            <hr />
            <table style="border-collapse: collapse;">
                <tr>
                    <td>
                        <asp:TextBox ID="txtInput" runat="server" CssClass="CInput" onkeyup="sendRqt(this)" AutoComplete="false"></asp:TextBox>
                        <asp:Button ID="Button1" runat="server" Text="Submit" />
                    </td>
                </tr>
                <tr style="position: absolute;">
                    <td>
                        <div id="divSuggestions">
                            123
                        </div>
                    </td>
                </tr>
            </table>
        </div>
        </form>    <script type="text/javascript">
            var xhr;
            var isIe = window.navigator.appName.indexOf("Netscape") == -1 ? true : false;        function crtRqt() {
                if (window.ActiveXobject)
                    xhr = new ActiveXObject("Microsoft.XMLHTTP");
                else xhr = new XMLHttpRequest();
            }
            function sendRqt(srcElm) {
                var sInput = srcElm.value;
                if (sInput != "") {
                    var url = "HotKeyTest.aspx?t=" + new Date().getTime() + "&w=" + escape(sInput);
                    crtRqt();
                    xhr.onreadystatechange = hdlRsp;
                    xhr.open("GET", url, true);
                    xhr.send(null);
                }
                else $("#divSuggestions").hide();
            }
            function hdlRsp() {
                if (xhr.readyState == 4 && xhr.status == 200) {
                    var rspText = xhr.responseText;
                    if (rspText != "") {
                        var arrRspText = xhr.responseText.split(',');
                        var sInnerHtml = "";
                        for (var i = 0; i < arrRspText.length; ++i) {
                            sInnerHtml += "<span onmouseover='setStyle(this,true)' onmouseout='setStyle(this,false)'"
                                    + " onclick=setInput(this);$('#divSuggestions').hide();>" + arrRspText[i] + "</span>";
                        }
                        $("#divSuggestions").html(sInnerHtml);
                        $("#divSuggestions").show();
                    }
                    else $("#divSuggestions").hide();
                }
            }
            function setStyle(srcElm, bOver) {
                srcElm.style.background = bOver ? "orange" : "";
            }
            function setInput(srcElm) {
                $("#<%=txtInput.ClientID %>").val(srcElm.innerHTML);
            }
        </script></body>
    </html>后台CS文件:using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.SqlClient;
    using System.Collections.Specialized;
    using System.Text;namespace Test
    {
        public partial class HotKeyTest : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                string strInput = string.IsNullOrEmpty(Request.QueryString["w"]) ? string.Empty : Request.QueryString["w"];
                if (strInput.Trim().Length != 0)
                {
                    //string sss = (HttpUtility.UrlDecode(Request.QueryString["w"]));
                    NameValueCollection utf8Requests = HttpUtility.ParseQueryString(Request.Url.Query, Encoding.UTF8);
                    Suggeste(utf8Requests.Get("w"));
                }
            }        private void Suggeste(string originalStr)
            {
                SqlConnection conn = new SqlConnection("data source=localhost;database=TestDB;user id=sa;password=19831016");
                string cmdText = "SELECT TOP 10 AdminLoginId FROM AdminsInfo WHERE AdminLoginId LIKE @w";
                SqlParameter para = new SqlParameter("@w", string.Format("{0}%", originalStr));
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = conn;
                cmd.CommandText = cmdText;
                cmd.Parameters.Add(para);
                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                while (reader.Read())
                {
                    sb.AppendFormat("{0},", reader[0]);
                }
                reader.Close();
                conn.Close();
                Response.ContentType = "text/plain";
                Response.Clear();
                if (sb.Length != 0)
                {
                    Response.Write(sb.ToString().Remove(sb.Length - 1));
                }
                else
                {
                    Response.Write(string.Empty);
                }
                Response.Flush();
                Response.Close();
            }
        }
    }
      

  3.   

    You can download from here : www.51aspx.com
      

  4.   

    建议楼主用JSON返回数据,这样返回的数据如果是多个,自己可以控制然后使用层,JS控制。样式之类自己写。我现在也在写这个智能提示。仅仅就是使用了JSON返回数据。其他的层的控制,CSS都是自己的写的,还加了ENTER,TAB,UP,DOWN4个键的键盘事件!
    还可以返回多个数据,分别自动输入在多个文本框。如果仅仅用别人的jquery autocomplete组件,自我觉得会有局限性。没有扩展性。
      

  5.   

    下载 jquery.autocomplete.js ,然后很简单的 ,上官网或者随便 google 上复制 那段代码,根据自己的需要修改一下。前台代码要自己写的大概四五行(太幸福了),后台取数据的话对于你来说应该很简单吧,一般 response.write json 格式的数据 返回。
      

  6.   

    http://www.open-open.com/ajax/AutoComplete.htm
      

  7.   

    楼主百度,Google上多的是,你如果看了人家的代码,还有什么错误的话,可以来问。这样的话对你成长有帮助。