クライアント側の対話を処理し、前後に通信するために、JavaScript を使用したScriptControl
(が必要) があります。ページ上のコントロールの 1 つまたは複数のインスタンスで、すべてが完全に機能します。並べ替えを使用してコントロールを内部に配置しましたが、それでも機能します。ただし、を配置すると、並べ替えるたびに、インスタンスごとに次のエラーが発生します。ScriptManager
ICallbackEventHandler
GridView
GridView
UpdatePanel
Sys.InvalidOperationException: Two components with the same id 'GridView_ctl02_MyControl' can't be added to the application.
誰かがこれを解決する方法について正しい方向に向けることができますか? 同じ ID を持つ新しいオブジェクトを試す前ScriptManager
に、古いオブジェクトを破棄しないと仮定しています。/の組み合わせは、置き換えられるオブジェクトの破棄を自動的に処理すると思いましたか?Sys.UI.Control
$create()
UpdatePanel
ScriptManager
編集:このページは、私が考えたことをサポートしているようです: http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.registerdispose.aspx
RegisterDispose メソッドを使用して、UpdatePanel コントロール内にあるコントロールの破棄スクリプトを登録します。非同期ポストバック中に、UpdatePanel コントロールを更新、削除、または作成できます。パネルが更新または削除されると、UpdatePanel 内にあるコントロールに登録されている破棄スクリプトが呼び出されます。一般的なページ開発シナリオでは、RegisterDispose メソッドを呼び出す必要はありません。
再確認するためalert("dispose " + this.element.id)
に、JavaScriptdispose()
関数内に配置しました。すべてのインスタンスがアラートを出しますdispose GridView_ctl02_MyControl
が、その後、2 つのコンポーネントが同じ名前を持つことはできないというエラーが表示されますGridView_ctl02_MyControl
。私は途方に暮れています...