스크립트 컨트롤 (ASP.NET)을 사용하여 자동 완성 컨트롤 스크립트를 얻으려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/346632

문제

문제스크립트 파일의 스크립트 컨트롤을 사용하여 AJAX 툴킷 자동 완성 컨트롤에서 이벤트를 캡처하고 할당하려면 어떻게해야합니까?

설명

기본적으로 텍스트 상자와 자동 완성 컨트롤을 결합하여 자동 완성에 대한 일반적인 제어를 가질 수 있도록 스크립트 컨트롤을 만들었습니다. 다음 단계는 항목을 검색하는 동안 처리 이미지와 같은 것을 추가하는 것이 었습니다. 충분히 쉬워 보였다.

protected override IEnumerable<ScriptDescriptor> GetScriptDescriptors()
{  
  ScriptControlDescriptor desc = new ScriptControlDescriptor   
     ("NDI.WebControls.Client.GenericAutoComplete", this.ClientID);
  desc.AddProperty("autoCompleteID", autoComplete.ClientID);

  return new ScriptDescriptor[] { desc };
}

그리고 JavaScript에서 Normal :

initialize: function()
{
  this._autoComplete = $get(this._autoCompleteID);  
  //this._autoCompleteID does have a value

  this._autoCompleteClientPopulating = 
     Function.createDelegate(this, this.handleAutoCompleteClientPopulating);

  $addHandler(this._autoComplete, "clientPopulating", 
     this._autoCompleteClientPopulating);

  NDI.WebControls.Client.GenericAutoComplete.callBaseMethod(this, 'initialize');
},

이제 이것은 작동하지만 그렇지 않습니다. 왜요? 분명히 일반 제어와 같이 페이지에 렌더링 된 자동 완성 제어가 없기 때문입니다. 따라서 $에 도달하면 텍스트 속성이있는 ID 속성에도 불구하고 NULL이 나타납니다. (즉, 제어가 존재하지 않습니다)

메소드를 할당하기 위해 Onxyz Properties Server 쪽을 사용해야합니까? 에서와 같이 :

  autocomplete.OnClientPoplating = someScript;
도움이 되었습니까?

해결책

대답

Booyah가 그것을 발견했습니다. AutoComplete에는 JavaScript의 이벤트에 액세스 할 수있는 내장이 있습니다.

서버 측면에서 행동을 설정해야합니다.

autoComplete.BehaviorID = "autoCompleteBehavior";

그런 다음 getScriptDescriptors 메소드에서 설정하십시오.

protected override IEnumerable<ScriptDescriptor> GetScriptDescriptors()
{
  ScriptControlDescriptor desc = new 
   ScriptControlDescriptor("NDI.WebControls.Client.GenericAutoComplete", ClientID);
   desc.AddProperty("autoCompleteID", autoComplete.BehaviorID);

  return new ScriptDescriptor[] { desc };
}

물론 해당 값을 캡처하려면 속성 스크립트 측면을 추가해야하며 일단 해당 작업을 사용해야합니다. 그런 다음 이벤트 핸들러를 만들어야합니다.

this._autoComplete = $find(this._autoCompleteID);
this._onAutoCompletePopulating = 
   Function.createDelegate(this, this.handleOnAutoCompletePopulating);

마지막으로 자동 완성 컨트롤 (동작 객체)에서 내장 이벤트 세터를 사용하십시오.

this._autoComplete.add_populating(this._onAutoCompletePopulating);

그리고 붐, 설정되었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top