今天大家怎么样?
问题
基本上,我今天正在深入研究AjaxControlToolkit的世界,主要目的是满足我的AutoComplete要求。我把所有内容都按照教程进行了设置,并且对于为什么事情不起作用感到有些困惑(好吧,我对于可能阻碍我的事情有所了解。)
我已经将AjaxControlToolkit dll添加到我的项目中,并且在我的Markup中我有以下内容:
在顶部
<%@ 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
由于我不确定的原因,永远不会调用该函数。
潜在问题
有些问题可能会出现问题:
任何帮助都将不胜感激。
提前致谢。
答案 0 :(得分:0)
尝试将GetCompletionList函数放在Web服务中(asmx最简单)。确保web服务类具有[ScriptService]属性,并且您的函数具有[ScriptMethod]属性。
您还需要在AutoCompleteExtender的“ServicePath”属性中提供Web服务的路径(即ServicePath =“〜/ MyService.asmx”)
此外,除非从AutoCompleteExtender控件传递上下文密钥,否则您的函数中不需要“contextKey”参数。
HTH
答案 1 :(得分:0)
更新:添加这些属性并尝试使用。我已实现,它适用于Web方法后面的页面。
ServiceMethod="yourGetfunction"
MinimumPrefixLength="2"
CompletionInterval="100"
EnableCaching="FALSE"
CompletionSetCount="20"
答案 2 :(得分:0)
您可以查看此解决方案:http://suggester.codeplex.com/
演示测试:http://show-demos.net/suggester/
它不是来自ALAX Toolkit,而是使用ASP.NET AJAX和jQuery,并且具有更丰富的功能
答案 3 :(得分: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>