请给个实例,asp.net autocomplete 自动完成 asp.net 自动完成下拉菜单,并依据输入的内容 从数据库里查找该行其他字段 并填充进相应的web控件里。谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.zhiweinet.com/jiaocheng/2008-06/721p2.htm 前台页面:<%@ 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(); } }} You can download from here : www.51aspx.com 建议楼主用JSON返回数据,这样返回的数据如果是多个,自己可以控制然后使用层,JS控制。样式之类自己写。我现在也在写这个智能提示。仅仅就是使用了JSON返回数据。其他的层的控制,CSS都是自己的写的,还加了ENTER,TAB,UP,DOWN4个键的键盘事件!还可以返回多个数据,分别自动输入在多个文本框。如果仅仅用别人的jquery autocomplete组件,自我觉得会有局限性。没有扩展性。 下载 jquery.autocomplete.js ,然后很简单的 ,上官网或者随便 google 上复制 那段代码,根据自己的需要修改一下。前台代码要自己写的大概四五行(太幸福了),后台取数据的话对于你来说应该很简单吧,一般 response.write json 格式的数据 返回。 http://www.open-open.com/ajax/AutoComplete.htm 楼主百度,Google上多的是,你如果看了人家的代码,还有什么错误的话,可以来问。这样的话对你成长有帮助。 富文本控件传参问题,求助! 数据库的图片问题 商城产品发布多图片上传数据库设计问题 关于b to c网站设计应该注意的问题 如何重新注册asp.net? .net2005 与.net2003的布局问题 请问如何用ASP.NET实现IT网站的产品的比较功能 ★★★★★★数据 早绑定问题 ★★★★★★ 怎样构建Model 已经装了VS.NET,为什么还是不能调试ASP.NET的程序! 如何添加AjaxPro.dll的引用 Ado.Net从 Sqlserver误读数据难题
<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();
}
}
}
还可以返回多个数据,分别自动输入在多个文本框。如果仅仅用别人的jquery autocomplete组件,自我觉得会有局限性。没有扩展性。