我正在尝试在我的网络应用中填充自动完成功能。该列表由数据表填充。出于某种原因,我无法在自动完成中显示它。我知道我从查询中获得结果,因为我可以使用消息框来查看它们。在这个例子中,我将结果限制为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;
}
}
}
答案 0 :(得分:0)
jQUery autocomplete需要javascript定义参数。
您正在传递服务器处理程序。
我猜您必须收到javascript错误。检查控制台。
我通常使用对服务器方法的AJAX调用来定义自动完成,我从数据库加载数据并将其返回到自动完成插件。
我不习惯使用aspforms,但我很确定你没有朝着正确的方向前进。
检查文档以获取更多信息: http://jqueryui.com/autocomplete/
答案 1 :(得分:0)
将您的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>
答案 2 :(得分:0)
我决定修改处理程序页面,而不是使用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();
}