스크립트 컨트롤 (ASP.NET)을 사용하여 자동 완성 컨트롤 스크립트를 얻으려면 어떻게해야합니까?
-
19-08-2019 - |
문제
문제스크립트 파일의 스크립트 컨트롤을 사용하여 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);
그리고 붐, 설정되었습니다.
제휴하지 않습니다 StackOverflow