0

今天大家怎么样?

问题
基本上,我今天正在深入研究 AjaxControlToolkit 的世界,主要目的是满足我的 AutoComplete 要求。我已经按照教程设置了所有内容,并且对于为什么事情不工作有点困惑(好吧,我知道可能是什么阻碍了我)。

我已将 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

由于我不确定的原因,该函数永远不会被调用。

潜在问题
有几个潜在问题可能会出错:

  • 我尝试将 AjaxControlToolkit dll 添加到 VS(2010)中的工具栏,但所有控件都显示为灰色...
  • 我写的GetCompletionList函数(WebMethod)在页面后面的代码中。因为它可能必须在 Web 服务中,所以不能调用它吗?
  • 我也刚刚意识到我后面代码中的函数不是Shared,这是必需的吗?因为与自动完成关联的列表是动态的。

任何帮助,将不胜感激。

提前致谢。

4

4 回答 4

0

您可以查看此解决方案:http ://suggester.codeplex.com/

演示测试:http ://show-demos.net/suggester/

它不是来自 ALAX Toolkit 但它使用 ASP.NET AJAX 和 jQuery 并且具有更丰富的功能

于 2011-04-06T09:16:59.437 回答
0

尝试将您的 GetCompletionList 函数放在网络服务中(asmx 最简单)。确保 web 服务类具有 [ScriptService] 属性,并且您的函数具有 [ScriptMethod] 属性。

您还需要在 AutoCompleteExtender 的“ServicePath”属性中提供 Web 服务的路径(即 ServicePath="~/MyService.asmx")

此外,除非您从 AutoCompleteExtender 控件传递上下文键,否则您不需要函数中的“contextKey”参数。

hth

于 2011-03-10T16:57:57.487 回答
0

更新:添加这些属性并尝试一下。我已经实现,它适用于 web 方法后面的页面。

ServiceMethod="yourGetfunction"
MinimumPrefixLength="2" 
CompletionInterval="100"
EnableCaching="FALSE"
CompletionSetCount="20"
于 2011-03-10T23:59:04.570 回答
0

我有点让这个工作:

<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>
于 2017-06-22T22:46:29.700 回答