jQuery自动完成不填充ASP
本文关键字:填充 ASP jQuery | 更新日期: 2023-09-27 18:11:35
我正试图在我的Web应用程序中填充自动完成。该列表是从一个数据表填充的。由于某些原因,我无法在自动补全中显示它。我知道我正在从查询中获得结果,因为我可以使用消息框来查看它们。在本例中,我将结果限制为5。
客户端代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="AddToMonitoring.Default" %>
<head runat="server">
<script type="text/javascript">
$(document).ready(function () {
$("#<%=txtAutoComplete.ClientID%>").autocomplete('AutoCompleteHandler.ashx');
});
</head>
<body>
<div id="inputDIV" style="font-size: x-large; font-family: Calibri;
position: relative; top: 25px; left: 25px; height: 638px; width: 1239px;">
Asset Name: <asp:TextBox id="txtAutoComplete" runat="server" />
</div>
</body>
处理程序页面:
public class AutoCompleteHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
dsCIInfoTableAdapters.BMC_CORE_BMC_ComputerSystemTableAdapter serverTableAdapter1;
serverTableAdapter1 = new dsCIInfoTableAdapters.BMC_CORE_BMC_ComputerSystemTableAdapter();
dsCIInfo.BMC_CORE_BMC_ComputerSystemDataTable newServerTable;
newServerTable = serverTableAdapter1.GetData();
var query = (from row in newServerTable.AsEnumerable()
where row.Field<string>("Item") == "Server"
select row.Field<string>("Name")).Distinct().Take(5);
var queryArray = query.ToArray();
StringBuilder sb = new StringBuilder();
foreach (string row in queryArray)
{
context.Response.Write(sb.Append(row).Append(Environment.NewLine));
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
jQUery自动完成需要一个javascript定义的参数。
你正在传递一个服务器处理程序。
我猜你一定是收到一个javascript错误。检查控制台。
我通常通过AJAX调用服务器方法来定义自动补全,我从数据库中加载数据并将其返回给自动补全插件。
我不习惯使用表单,但我敢肯定你的方向不对。
查看文档以获取更多信息:http://jqueryui.com/autocomplete/
我决定取消处理程序页面,而是使用hiddenElement
客户端
$(document).ready(function () {
var tags = eval($("#<%=txtHiddenAutoComplete.ClientID%>").val());
$("#<%=txtAutoComplete.ClientID%>").autocomplete({ source: tags });
})
将查询移动到Page_Load函数
protected void Page_Load(object sender, EventArgs e)
{
dsCIInfoTableAdapters.BMC_CORE_BMC_ComputerSystemTableAdapter serverTableAdapter1;
serverTableAdapter1 = new dsCIInfoTableAdapters.BMC_CORE_BMC_ComputerSystemTableAdapter();
dsCIInfo.BMC_CORE_BMC_ComputerSystemDataTable newServerTable;
newServerTable = serverTableAdapter1.GetData();
var query = (from row in newServerTable.AsEnumerable()
where row.Field<string>("Item") == "Server"
select row.Field<string>("Name")).Distinct();
var queryArray = query.ToArray();
StringBuilder sb = new StringBuilder();
sb.Append("[");
foreach (string row in queryArray)
{
sb.Append("'"").Append(row).Append("'",");
}
sb.Append("]");
sb.Replace(",]", "]");
txtHiddenAutoComplete.Value = sb.ToString();
}
将asp.net处理程序中的最后四行更改为
StringBuilder sb = new StringBuilder();
foreach (string row in queryArray)
{
sb.Append(row).Append(Environment.NewLine);
}
context.Response.Write(sb.ToString());
并添加缺少的结束脚本块。
并加上
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/jquery-ui.min.js"></script>