2009-07-06 5 views
0

私は異なるプレースホルダを持つページを持っています。そのうちの一つで、私は(ajaxtoolkit ModalPopupExtenderを使用して)2番目のプレースホルダにモーダルポップアップを開くリンクがあります。上記のようにやってたとき1つのプレースホルダにリンクを設定すると、別のプレースホルダにModalPopupが開きますか?

<asp:Content ID="content1" ContentPlaceHolderID="placeholder1" Runat="Server"> 
    <asp:LinkButton ID="link" runat="server" Text="Popup link" /> 
</asp:Content> 

<asp:Content ID="content2" ContentPlaceHolderID="placeholder2" Runat="Server"> 
    <asp:Panel ID="panel" runat="server" Text="Popup content" /> 
    <ajaxToolkit:ModalPopupExtender ID="popup" runat="sever" 
     TargetControlID="link" 
     PopupControlID="panel" 
     /> 
</asp:Content> 

を、それがpopupができないことを言って、私に例外を発生させますlinkを見つけてください(これは2つの異なるプレースホルダにあるためわかります)。

どうすればこの作品を作成できますか?私は何かのコードの背後にあるFindControlを見つけることができると思うが、私は実際にこの機能を使用していない、かなり計算上高価です(特に私の入れ子レイアウト)。

答えて

1

1つの問題は、TargetControlIDとPopupControlIDが逆になることです。 TargetControlIDは、あなたのケースでは「Modal Pop」にしたいアイテムのIDです(Panel1)。 PopupControlIDは、ModalPopupをトリガーするコントロールのIDです。あなたのケースでは「リンク」

しかし、それでもうまくいかない場合、私はモーダルを別の場所に置いています以下の方法を使用する前にパネルを更新してください。まったく同じ問題ではありませんが、この回避策が役立つかもしれません(あなたのページにスクリプトマネージャがあると仮定しています)。

  1. は、ID = "hiddenLink" あなたModalExtender PopupControlID = "hiddenLink" content1の "リンク" のための分離コードで
  2. を設定

  3. とContent2の隠し要素を作成し、以下にonClickイベントを追加します

    ModalPopup1.show()

  4. あなたがupdatePanelsを使用している場合、あなたはまだフルpostbacになるだろうrefresh.But、これはModalPopupページせずにAJAXの形で表示されますkクライアントとサーバー間のデータの量。

方法2、javascript関数を使用してModalにも表示できます。 behaviorID = "MyModal1"(またはそれを呼びたいもの)をModalpopup定義に追加します。

<asp:LinkButton ID="link" runat="server" Text="Popup link" OnClientClick="$get('MyModal1').show(); return false;"/> 

注:上記の例では、偽のリターンがポストバックを実行することから、.NETページを防ぎ、あなたのリンクを変更します。

+0

あなたの答えをありがとう! TargetControlIDとPopupControlIDのミックスはタイプミスでしたが、修正するためにありがとうございました。私は方法2が好きですが、なぜステップ1と2が必要ですか? – Wookai

+0

私の経験上、modalPopupはtargetControlIDを持つのが好きです。私はそれなしでコンパイルエラーがあった。だからステップ1と2の方法1、私は何もしませんが、編集中に喜んでmodalPopupを作る隠しコントロールを作成します:それはまた、以前のAJAXツールキットの制限されている可能性があります... – Tommy

+0

ああ - それらは簡単です彼らは混ざり合っていますか?私はそれがpopUpControlID .... etcなどを持つのが好きだということを意味した – Tommy

関連する問題