ウィジェットのリストを表示するページに ListView があります。ユーザーがリスト内の項目の 1 つをクリックすると、ユーザーが選択した項目を操作できるようにするコントロールを含むModalPopupを表示したいと考えています。
これは、ListView の ItemTemplate に Panel と ModalPopupExtender を配置することで簡単に実現できますが、これは各ウィジェットごとに 1 つの非表示コントロール セットを意味するため、ページ サイズが大幅に肥大化します。(かなり重いコントロールがいくつかあります。) 代わりに、リスト内のウィジェットごとに単一の ModalPopup を再利用したいと考えています。
いくつか検索しましたが、以前の状況に直接当てはまるものは見つかりませんでした。しかし、私が理解できたことから、次のようなことをしなければなりません:
- UpdatePanel 内のページに Panel と ModalPopupExtender を配置します。
- プロパティを持つカスタム
WidgetManipulator
ユーザー コントロールを作成しWidgetID
ます。これを、いくつかの OK/Cancel ボタンとともに Panel に配置します。 - ページの Javascript で、クリック ハンドラーを ListView の各ウィジェットにアタッチして、UpdatePanel でポストバックをトリガーします。
- サーバー上の
UpdatePanel_Load
イベントで ModalPopup を表示し、プロパティにクリックされたウィジェットの ID を設定WidgetID
しWidgetManipulator
ます。 OKButton_Click
イベントまたはサーバー上のCancelButton_Click
イベントで、ModalPopup を非表示にします。OKButton がクリックされた場合は、WidgetManipulator.SaveChanges()
最初に呼び出します。
私が理解していない部分は次のとおりです。どのウィジェットがクリックされたかをどうやって知るのですか? UpdatePanelを更新するときに、それをサーバーに戻すにはどうすればよいですか? これはまったく正しいアプローチですか?