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自动完成不填充ASP

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>