2011-03-10 5 views
0

오늘 모든 사람이 어떻게됩니까?ASP.Net에서 AutoCompleteExtender 사용

문제점 기본적으로
, 내 자동 완성 요구 사항을 충족의 주요 목표로, 오늘 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> 

다음에서 최고

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

에서

다음 내 콘텐츠 내에서 :

은 내가 다음이 내 프로젝트에 내 마크 업에 AjaxControlToolkit의 DLL을 추가 한 코드 뒤에, 내 작은 기능이있다 (어떤 중단 점에 결코 도달하지 않는다)

<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)는 페이지의 코드에 있습니다. 이것은 아마도 웹 서비스에 있어야하기 때문에 호출 할 수 없습니까?
  • 나는 또한 코드의 내 기능이 을 공유하지 않는다는 사실을 깨달았습니다. 자동 완성과 관련된 목록은 동적이기 때문에.

어떤 도움을 주시면 감사하겠습니다.

미리 감사드립니다.

+0

웹 메서드의 컨텍스트 키 매개 변수는 무엇입니까? 내 지식으로는 프로토 타입 서명이 잘못 되었기 때문에 최소한 prefixText (String), count (int) (두 개 이상의 속성이 필요하다. [어쩌면 내가 뭔가를 놓친거야] –

답변

0

GetCompletionList 기능을 웹 서비스에 넣어보십시오 (asmx가 가장 쉽습니다). 웹 서비스 클래스에 [ScriptService] 속성이 있고 함수에 [ScriptMethod] 속성이 있는지 확인하십시오. 또한

, 당신 "이 필요하지 않습니다

는 또한 AutoCompleteExtender의"ServicePath "속성 (예 : ServicePath ="~/MyService.asmx ")의 웹 서비스에 경로를 제공해야합니다 contextKey "매개 변수를 AutoCompleteExtender 컨트롤에서 컨텍스트 키를 전달하지 않는 한 함수에 추가하십시오.

hth

+0

이것은 내가 시도하는 방식이 무엇이든지 가능하다는 것을 의미합니까? 가능한 경우이 방법을 사용하지 않는 것이 좋습니다. – ThePower

+0

웹 서비스 또는 페이지 메서드를 사용하여 AutoCompleteExtender를 사용할 수 있습니다. 페이지 메소드를 사용하려면 먼저 scriptmanager에서 페이지 메소드를 활성화해야합니다. 페이지 메서드 자체는 정적 (또는 Visual Basic의 Shared)이어야합니다. 다음은 웹 서비스 대신 페이지 메소드를 사용하는 방법을 보여주는 링크입니다. http://allwrong.wordpress.com/2007/03/13/ms-ajax-autocomplete-extender-using-a-page-method/ – blech

+0

좋은 링크, 고마워. – ThePower

0

업데이트 : 이러한 특성을 추가하고 시도하십시오. 구현했고 웹 메소드 뒤에있는 페이지에서 작동합니다.

ServiceMethod="yourGetfunction" 
MinimumPrefixLength="2" 
CompletionInterval="100" 
EnableCaching="FALSE" 
CompletionSetCount="20" 
당신은이 솔루션을 확인할 수 있습니다
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>