1

ウィジェットのリストを表示するページに ListView があります。ユーザーがリスト内の項目の 1 つをクリックすると、ユーザーが選択した項目を操作できるようにするコントロールを含むModalPopupを表示したいと考えています。

これは、ListView の ItemTemplate に Panel と ModalPopupExtender を配置することで簡単に実現できますが、これは各ウィジェットごとに 1 つの非表示コントロール セットを意味するため、ページ サイズが大幅に肥大化します。(かなり重いコントロールがいくつかあります。) 代わりに、リスト内のウィジェットごとに単一の ModalPopup を再利用したいと考えています。

いくつか検索しましたが、以前の状況に直接当てはまるものは見つかりませんでした。しかし、私が理解できたことから、次のようなことをしなければなりません:

  1. UpdatePanel 内のページに Panel と ModalPopupExtender を配置します。
  2. プロパティを持つカスタムWidgetManipulatorユーザー コントロールを作成しWidgetIDます。これを、いくつかの OK/Cancel ボタンとともに Panel に配置します。
  3. ページの Javascript で、クリック ハンドラーを ListView の各ウィジェットにアタッチして、UpdatePanel でポストバックをトリガーします。
  4. サーバー上のUpdatePanel_Loadイベントで ModalPopup を表示し、プロパティにクリックされたウィジェットの ID を設定WidgetIDWidgetManipulatorます。
  5. OKButton_Clickイベントまたはサーバー上のCancelButton_Clickイベントで、ModalPopup を非表示にします。OKButton がクリックされた場合は、WidgetManipulator.SaveChanges()最初に呼び出します。

私が理解していない部分は次のとおりです。どのウィジェットがクリックされたかをどうやって知るのですか? UpdatePanelを更新するときに、それをサーバーに戻すにはどうすればよいですか? これはまったく正しいアプローチですか?

4

2 に答える 2

1

代わりに jQuery を使用できる場合は、次の 2 つの投稿に沿って何かを行うことができます。

于 2008-11-02T17:18:50.017 に答える
0

ASP.NET AJAX でクライアントからサーバーにデータを渡す必要がある場合、通常は asp:HiddenField を runat="server" と共に使用します。どちらも自由に見ることができますが、潜在的なポストバックの非同期性に注意してください。

ウィジェットがクリックされたことをサーバーに通知する必要があるようです。タイマーを使用してポストバックすることができます。または、オプション 5 を使用します。

于 2008-10-31T00:07:38.980 に答える