2013-04-29 3 views
0

Я пытаюсь заполнить автозаполнение в своем веб-приложении. Список заполняется из данных. По какой-то причине я не могу заставить его показать в автозаполнении. Я знаю, что получаю результаты запроса, потому что я могу использовать окно сообщений для их просмотра. В этом примере я ограничиваю результаты 5.jQuery Автозаполнение не заполняется ASP

стороны клиента Код:

<%@ 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

Вы видите ошибки скрипта в ваших инструментах разработки браузеров (F12 в большинстве) – KingCronus

+0

Вы уверены, что вам нужно использовать StringBuilder? Кажется странным. Вместо 'context.Response.Write (sb.Append (строка) .Append (Environment.NewLine)), вы бы попробовали' context.Response.Write (row + Environment.NewLine); 'Надеюсь, что это поможет. –

ответ

0

Я решил Никс страницу обработчика, вместо этого использовать hiddenElement

Client-Side

$(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(); 

    } 
0

Jquery автозаполнение ожидает яваскрипт определения параметров ,

Вы передаете ему обработчик сервера.

Возможно, вы должны получить ошибку javascript. Проверьте консоль.

Обычно я определяю autocomplete с вызовом AJAX для метода сервера, где я загружаю данные из базы данных и возвращаю их в плагин автозаполнения.

Я не привык работать с аспидами, но я уверен, что вы не идете в правильном направлении.

Проверьте документацию для получения дополнительной информации: http://jqueryui.com/autocomplete/

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> 
Смежные вопросы