<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>AutoComplate</title>
<script type="text/javascript" src="js/jquery-1.4.1.min.js"></script>
<script type="text/javascript" src="js/jquery.autocomplete.js"></script>
<link rel="Stylesheet" href="js/jquery.autocomplete.css" />
<script type="text/javascript">
$(function () {
$("#autocomplete").autocomplete("Handler.ashx", {
minChars: 0,
max:10,
width: 200,
scroll: false,
scrollHeight: 500,
//此处为传递参数
extraParams: { v: function () { return $('#autocomplete').val(); } ,type:'UserInfo' },
//需要把data转换成json数据格式
parse: function(data) {
return $.map(eval(data), function(row) {
return {
data: row,
value: row.U_Name,
result: row.U_Name + " <" + row.Sex + "> "+" <" + row.Email + "> "
}
});
},
formatItem: function(data, i, total) {
return "<div style='float:left'>"+data.U_Name+" "+data.Sex+"</div>"
},
formatMatch: function(data, i, total) {
return data.name;
},
formatResult: function(data, value) {
return data.name;
}
}).result(function(event, data, formatted) {
$("#temp_id").val(data.Uid);
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<%--<div>
<input id="autocomplete" />
<input id="temp_id" />
</div>--%>
<div>
<asp:TextBox ID="autocomplete" runat="server"></asp:TextBox>
<asp:TextBox ID="temp_id" runat="server"></asp:TextBox>
</div>
</form>
</body>
</html>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
using System;
using System.Web;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using System.Text;
public class Handler : IHttpHandler
{
public bool IsReusable
{
get
{
return false;
}
}
public void ProcessRequest(HttpContext context)
{
SqlDataReader dr;
string key = context.Request["v"];
context.Response.ContentType = "text/plain";
SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["DataBaseConnection"]);
conn.Open();
string sqlstr = "select [Uid] ,[U_Name] ,[Sex] ,[Email] from [UserInfo] WHERE U_Name LIKE '%" + key + "%' OR Sex LIKE '%" + key + "%' ";
//string sqlstr = "select [Uid] ,[U_Name] ,[Sex] ,[Email] from [UserInfo] ";
SqlCommand comm = new SqlCommand(sqlstr, conn);
dr = comm.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
conn.Close();
//if (dt.Rows.Count > 0)
// context.Response.Write(DataTableToJson(dt));
//else
// return;
context.Response.Write(DataTableToJson(dt));
}
private string DataTableToJson(DataTable dt)
{
StringBuilder Json = new StringBuilder();
Json.Append("[");
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
Json.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
Type type = dt.Rows[i][j].GetType();
Json.Append(dt.Columns[j].ColumnName.ToString() + ":" + StringFormat(dt.Rows[i][j].ToString().Trim()));
if (j < dt.Columns.Count - 1)
{
Json.Append(",");
}
}
Json.Append("}");
if (i < dt.Rows.Count - 1)
{
Json.Append(",");
}
}
}
Json.Append("]");
return Json.ToString();
}
/// <summary>
/// 格式化字符型
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
private static string StringFormat(string str)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.Length; i++)
{
char c = str.ToCharArray()[i];
switch (c)
{
case '\"':
sb.Append("\\\""); break;
case '\\':
sb.Append("\\\\"); break;
case '/':
sb.Append("\\/"); break;
case '\b':
sb.Append("\\b"); break;
case '\f':
sb.Append("\\f"); break;
case '\n':
sb.Append("\\n"); break;
case '\r':
sb.Append("\\r"); break;
case '\t':
sb.Append("\\t"); break;
default:
sb.Append(c); break;
}
}
return "\"" + sb.ToString() + "\"";
}
}