62,271
社区成员
发帖
与我相关
我的任务
分享
<%@ 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>
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();
}
}
}