0

今日はみんな元気?

問題
基本的に、私はオートコンプリートの要件を満たすことを主な目的として、今日AjaxControlToolkitの世界を掘り下げています。私はすべてをチュートリアルとして設定しましたが、なぜ物事が機能しないのかについて少し混乱しています(私は何が私を妨げているのかについての知識があります)。

プロジェクトにAjaxControlToolkitdllを追加しましたが、マークアップには次のものがあります。

頂点で

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

よくわからない理由で、関数が呼び出されることはありません。

潜在的な問題問題が発生する可能性のある潜在的な問題
がいくつかあります。

  • VS(2010)のツールバーにAjaxControlToolkit dllを追加しようとしましたが、すべてのコントロールがグレー表示されています...
  • 私が書いたGetCompletionList関数(WebMethod)は、ページの後ろのコードにあります。おそらくWebサービスに含まれている必要があるため、これを呼び出すことはできませんか?
  • また、コードビハインドの関数が共有されていないことに気づきました。これは必要ですか?オートコンプリートに関連付けられているリストは動的であるためです。

どんな助けでもいただければ幸いです。

前もって感謝します。

4

4 に答える 4

0

GetCompletionList関数をWebサービスに配置してみてください(asmxが最も簡単です)。Webサービスクラスに[ScriptService]属性があり、関数に[ScriptMethod]属性があることを確認してください。

また、AutoCompleteExtenderの「ServicePath」プロパティ(つまり、ServicePath = "〜/ MyService.asmx")でWebサービスへのパスを指定する必要があります。

また、AutoCompleteExtenderコントロールからコンテキストキーを渡さない限り、関数に「contextKey」パラメーターは必要ありません。

hth

于 2011-03-10T16:57:57.487 に答える
0

更新:これらの属性を追加して試してください。私は実装しました、そしてそれはウェブメソッドの後ろのページで動作します。

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

このソリューションを確認できます:http ://suggester.codeplex.com/

テストするデモ:http ://show-demos.net/suggester/

ALAX Toolkitからではありませんが、ASP.NET AJAXとjQueryを使用し、より豊富な機能を備えています

于 2011-04-06T09:16:59.437 に答える
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 に答える