0

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;
        }
    }
}
4

3 に答える 3