0

解決策が見つからない問題があります。デフォルトのユーザーコントロールを動的に呼び出す親ページがあります(親ページで選択されたアイテムコンボXに基づく6つの異なるUC)。UC 内で、コンボ ボックスに基づいて UC 内の可視性を制御する JavaScript を挿入 (registerClientscript) します。すべての UC には同じコンボがありますが、この UC 内のコントロールは異なる場合があります。

私が抱えている問題は、最初のロード時に JS が正しく生成されることです...しかし、親からコンボ X を変更すると、UC の部分的な更新がトリガーされ、新しい JS が再登録されます。

function DefineView(sender, eventArgs) { 
var comboSearch = $find('%%cmbSearchType%%'); 
//cmbSearch Section 
switch (comboSearch.get_selectedItem().get_value()) { 
[[MY CODE HERE]
} 
}

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "SearchVisibilityPPSA",jsFunction.Replace("%%cmbSearchType%%", cmbSearchType.ClientID),true); 

ご覧のとおり、ClientID を置き換えます。ページの最初の読み込み時に、これは ctl00_PrincipalPlaceHolder_ctl00_cmbSearchType のように正しく解決されますが、Combo X を変更すると、ユーザー コントロールが再読み込みされ、上記のスクリプトが再読み込みされます。レンダリングされた HTML では、COMbo ID は ctl00_PrincipalPlaceHolder_ctl01_cmbSearchType に名前が変更されます (名前が ct00 から ct01 に微妙に変更されていることに注意してください)。私のデバッグでは、この ClientID に新しい ID が含まれていることがわかりましたが、レンダリングされた html で再生成されて置き換えられません。

私の質問は、この UC が呼び出されるたびに JS を強制的に再レン​​ダリングするにはどうすればよいですか? 何らかの理由で、元のレンダリングされた JS を常に使用しています (これが初めて動作する理由です)。

4

1 に答える 1

0

これは、IDを割り当てずに生成していた動的コントロールに関連していると思います... id属性を強制することにより、それは同じに保たれました...

于 2011-11-23T15:10:15.520 に答える