Использование AutoCompleteExtender с ASP.Net - PullRequest
0 голосов
/ 10 марта 2011

Как у всех сегодня?

Проблема По сути, сегодня я углубляюсь в мир AjaxControlToolkit, с главной целью выполнения моих требований к автозаполнению.Я настроил все как на уроке и немного запутался, почему что-то не работает (ну, я имею в виду, что может сдерживать меня).

Я добавил AjaxControlToolkit dllк моему проекту и в моей разметке у меня есть следующее:

вверху

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxControlToolkit" %>

, затем в моем контенте

<ajaxControlToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></ajaxControlToolkit:ToolkitScriptManager>

<asp:TextBox ID="txtSearch" runat="server" CssClass="search"></asp:TextBox>

<ajaxControlToolkit:AutoCompleteExtender ID="autoCompleteSearchExtender" runat="server" TargetControlID="txtSearch" ServiceMethod="GetCompletionList"></ajaxControlToolkit:AutoCompleteExtender>

Затем в коде, яиметь мою милую маленькую функцию (которая никогда не достигает точки останова)

<System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()> _
    Public Function GetCompletionList(ByVal prefixText As String, ByVal count As Integer, ByVal contextKey As String) As String()
        ' Get current list
        Dim myList As List(Of MyClass) = GetSearchResultList()

        Return (From s In myList Select s.Name).ToArray()
    End Function

Функция никогда не вызывается, по причине, в которой я не уверен.

Потенциальные проблемы Есть несколько потенциальных проблем, из-за которых все может пойти не так:

  • Я пытался добавить dll AjaxControlToolkit на панель инструментов в VS (2010), но все элементы управления неактивны ...
  • Функция GetCompletionList (WebMethod), которую я написал, находится в коде позади страницы.Может ли это быть вызвано, потому что это должно быть в веб-сервисе, возможно?
  • Я также только что понял, что моя функция в коде не Shared , это требуется?Поскольку список, связанный с автоматическим заполнением, является динамическим.

Любая помощь будет принята.

Заранее спасибо.

Ответы [ 4 ]

0 голосов
/ 23 июня 2017

Я вроде сделал это работая:

<WebMethod()> _
    Public Shared Function GetCompletionList(ByVal prefixText As String, ByVal count As Integer) As List(Of String)
        Dim listData As New List(Of String)
        listData.Add("A")
        listData.Add("B")
        listData.Add("C")
        Return listData
    End Function

Мой HTML:

<form id="maincontent" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods = "true">
    </asp:ScriptManager>
    <div>
           <table style="margin-top:40px;color:White">  
            <tr>  
                <td>  
                    Type in your search:  
                </td>  
                <td>  
                    <asp:TextBox ID="searchBox" runat="server"></asp:TextBox>  
                    <asp:AutoCompleteExtender ServiceMethod="GetCompletionList" MinimumPrefixLength="1"  
                        CompletionInterval="10" EnableCaching="false" CompletionSetCount="1" TargetControlID="searchBox"  
                        ID="AutoCompleteExtenderPersonSearch" runat="server" FirstRowSelected="false">  
                    </asp:AutoCompleteExtender>  
                </td>
            </tr>  
        </table>  

    </div>
    </form>
0 голосов
/ 11 марта 2011

Обновление: добавьте эти атрибуты и попробуйте.Я реализовал, и он работает со страницей за веб-методами.

ServiceMethod="yourGetfunction"
MinimumPrefixLength="2" 
CompletionInterval="100"
EnableCaching="FALSE"
CompletionSetCount="20"
0 голосов
/ 06 апреля 2011

Вы можете проверить это решение: http://suggester.codeplex.com/

Демонстрация для тестирования: http://show -demos.net / offerter /

Это не из ALAX Toolkit, ноон использует ASP.NET AJAX и jQuery и обладает более богатой функциональностью

0 голосов
/ 10 марта 2011

Попробуйте поместить функцию GetCompletionList в веб-сервис (asmx - самый простой). Убедитесь, что класс веб-службы имеет атрибут [ScriptService] и что ваша функция имеет атрибут [ScriptMethod].

Вам также необходимо указать путь к веб-службе в свойстве ServicePath вашего AutoCompleteExtender (т. Е. ServicePath = "~ / MyService.asmx")

Кроме того, вам не нужен параметр contextKey в вашей функции, если вы не передаете контекстный ключ из элемента управления AutoCompleteExtender.

НТН

...