public class JsonHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string str = context.Request.QueryString["q"];
DataTable dt = new DataTable();
DataColumn copycolumn1 = new DataColumn("name", typeof(String));
DataColumn copycolumn2 = new DataColumn("code", typeof(String));
DataColumn copycolumn3 = new DataColumn("spell", typeof(String));
dt.Columns.Add(copycolumn1);
dt.Columns.Add(copycolumn2);
dt.Columns.Add(copycolumn3);
for (int i = 0; i < 10; i++)
{
DataRow row = dt.NewRow();
row["name"] = "深发展A"+i;
row["code"] = "000001";
row["spell"] = "sfza";
dt.Rows.Add(row.ItemArray);
DataRow row1 = dt.NewRow();
row1["name"] = "苹果A" + i;
row1["code"] = "000002";
row1["spell"] = "apple";
dt.Rows.Add(row1.ItemArray);
}
string str1 = DataTableToJson(dt);
context.Response.ContentType = "application/json";
context.Response.Write(str1);
}
public bool IsReusable
{
get
{
return false;
}
}
/// <summary>
/// dataTable转换成Json格式
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public string DataTableToJson(DataTable dtChild)
{
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.Append("[");
for (int i = 0; i < dtChild.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = 0; j < dtChild.Columns.Count; j++)
{
jsonBuilder.Append("");
jsonBuilder.Append(dtChild.Columns[j].ColumnName);
jsonBuilder.Append(":\"");
jsonBuilder.Append(dtChild.Rows[i][j].ToString());
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("},");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("]");
return jsonBuilder.ToString();
}
}
<script type="text/javascript" src="Scripts/jquery.js">
</script>
<script type="text/javascript" src="Scripts/jquery.autocomplete.js">
</script>
<script type="text/javascript">
var stockInfoJson = [
{ name: "深发展A", code: "000001", spell: "sfza" },
{ name: "万科A", code: "000002", spell: "wka" },
{ name: "ST 国 农", code: "000004", spell: "stgn" },
{ name: "世纪星源", code: "000005", spell: "sjxy" },
{ name: "深振业A", code: "000006", spell: "szya" },
{ name: "ST 达 声", code: "000007", spell: "stds" },
{ name: "ST宝利来", code: "000008", spell: "stbll" },
{ name: "中国宝安", code: "000009", spell: "zgba" },
{ name: "S ST华新", code: "000010", spell: "ssthx" },
{ name: "山航B", code: "200152", spell: "shb" },
{ name: "*ST帝贤B", code: "200160", spell: "stdxb" },
{ name: "雷伊B", code: "200168", spell: "lyb" },
{ name: "宝石B", code: "200413", spell: "bsb" },
{ name: "小天鹅B", code: "200418", spell: "xteb" },
{ name: "粤高速B", code: "200429", spell: "agsb" },
{ name: "宁通信B", code: "200468", spell: "ltxb" },
{ name: "晨鸣B", code: "200488", spell: "cmb" },
{ name: "珠江B", code: "200505", spell: "zjb" },
{ name: "闽灿坤B", code: "200512", spell: "mskb" },
{ name: "华电国际", code: "600027", spell: "hdgj" }
];
var InfoJson = [{ name: "深发展A0", code: "000001", spell: "sfza" },
{ name: "深发展A1", code: "000001", spell: "sfza" },
{ name: "深发展A2", code: "000001", spell: "sfza" },
{ name: "深发展A3", code: "000001", spell: "sfza" },
{ name: "深发展A4", code: "000001", spell: "sfza" },
{ name: "深发展A5", code: "000001", spell: "sfza" },
{ name: "深发展A6", code: "000001", spell: "sfza" },
{ name: "深发展A7", code: "000001", spell: "sfza" },
{ name: "深发展A8", code: "000001", spell: "sfza" },
{ name: "深发展A9", code: "000001", spell: "sfza"}];
/*==========加载时执行的语句==========*/
$(function () {
$.getJSON("JsonHandler.ashx", {}, function (json) {
initAutoComplete(json);
})
});
function initAutoComplete(json) {
$("#suggest1").autocomplete(json, {
minChars: 1,
matchCase: false, //不区分大小写"JsonHandler.ashx"
autoFill: false,
max: 10,
formatItem: function (row, i, max, term) {
// row = eval("(" + row + ")"); "JsonHandler.ashx"
var v = $("#suggest1").val();
return row.name + " (" + row.code + ")";
if (row.code.indexOf(v) == 0 || row.spell.indexOf(v) == 0) {
return row.name + " (" + row.code + ")";
}
else
return false;
},
formatMatch: function (row, i, max) {
// row = eval("(" + row + ")");
return row.name + " (" + row.code + ")";
},
formatResult: function (row) {
// row = eval("(" + row + ")");
return row.name + " (" + row.code + ")";
},
reasultSearch: function (row, v)//本场数据自定义查询语法 注意这是我自己新加的事件
{
// row = eval("(" + row + ")");
//自定义在code或spell中匹配
if (row.data.code.indexOf(v) >= 0 || row.data.spell.indexOf(v) >= 0||row.data.name.indexOf(v)>=0 ) {
return row;
}
else
return false;
}
});
}
</script>
<h2>
Welcome to ASP.NET!
</h2>
<p>
To learn more about ASP.NET visit <a href="http://www.asp.net" title="ASP.NET Website">www.asp.net</a>.
</p>
<p>
You can also find <a href="http://go.microsoft.com/fwlink/?LinkID=152368&clcid=0x409"
title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>.
</p>
<hr />
<h1>jquery.autocomplete.js 扩展自定义查询方法</h1>
<p>
<label>StockInfo(local):</label>
<input type="text" id="suggest1" />
</p>