3

通常、次のようなものを使用して TargetControlID サーバー側を設定できます。

    AutoCompleteExtender ace = new AutoCompleteExtender();
    ace.ID = "AutoCompleteExtender1";
    ace.TargetControlID = "whatever";

AutoCompleteExtender クライアント側を取得する方法は知っていますが、TargetControlID クライアント側も更新する方法を探しています。何か案は?

4

2 に答える 2

2

残念ながら、これは AutoCompleteExtender の既存のインスタンスでは不可能です。以下のように、あなたが興味を持っているかもしれないいくつかの方法があります

var x = $find("AutocompleteBehaviorID");//find the instance

x.get_completionListElementID();//get the ID of target textbox

x.set_completionListElementID();//set the ID of target textbox has no effect though :(

x._completionListElement();//direct access to DOM element that acts as target

ここでの問題は、初期化されたバージョンが、コントロールツールキットのフェーズ中に追加のイベントをターゲットテキストボックスに添付しているようですinit(クライアント側にもinitフェーズがあります)。初期化されたバージョンがターゲットとして変更されると(やりたいように)、これらのイベントなどが追加されないためkeypressblur変更は表示されません。ただし、JavaScript を知っている場合は、以下を実行して任意のテキスト ボックスで動作させることができます。

$create(Behavior,{properties},{events},interfaces,target);

どこ

行動

AjaxControlToolkit.AutoCompleteBehavior

プロパティ

以下のようにJavaScriptオブジェクトです(プロパティは他にもありますが、これらで十分です

{
    "completionInterval": 1,
    "completionListElementID": "empty panel id",
    "completionListItemCssClass": "css class name",
    "delimiterCharacters": ";",
    "highlightedItemCssClass": "css class name",
    "id": "CLIENTSIDEID",
    "minimumPrefixLength": 1,
    "serviceMethod": "WebMethodName",
    "servicePath": "AbsolutePath to asmx file"
}

イベント

利用可能なイベントが他にもあります

{
    "itemSelected": jsFn,
    "populated": jsFn
}

ターゲット

ターゲット要素が最も重要です。すべてのイベント、ベル、ホイッスルが引き付けられたのはこのテキスト ボックスです。

$get("ELEMENT ID")

以上で、JavaScript を使用してオートコンプリートのインスタンスをいつでも初期化できます。ID が存在しないことを確認してください。

于 2012-04-24T09:08:23.053 に答える
0

どうやらMicrosoftは重要だとは考えていなかったので、現時点ではこれを行う方法はありません:)

于 2012-05-17T15:27:09.267 に答える