0

うーん、問題は少しややこしいようです。

片手に を持っていUpdate Panelます。このUpdate Panel中に がありModal Popup Extender、このポップアップの内容はWeb User Controlです。

User Controlはギャラリー スライダー ( http://bxslider.com/ ) を含めようとしていますが、これは JavaScript の行で簡単に初期化する必要があります。

$(document).ready(function() {
  $('.bxslider').bxSlider();
}

ここで、.bxsliderはギャラリー スライドが定義されているコンテナーのクラスです。

Web を閲覧しているときに、ポップアップを起動するコントロールをクリックすると、ギャラリー コントロール (前、次、およびギャラリーの各スライドを表す多数の円を含むフッター バー) が表示されますが、そうではありません。ギャラリー自体のコンテンツを見ることができます。

これで、Chrome コンソールにアクセスすると、魔法のようにギャラリーがレンダリングされます。

初期化をいくつかの場所に配置しようとしました:

  1. Web User Controlマークアップ ファイルの先頭。

  2. マークアップ ファイルのWeb User Control末尾。

  3. Web User Control Loadイベントでは:

    protected void Page_Load(object sender, EventArgs e) {
      String script = "$(document).ready(function() { $('.bxslider').bxSlider(); }";
      ScriptManager.RegisterStartupScript((Control)this.Page, this.Page.GetType(), new Guid().ToString(), script, true);
    }
    
  4. イベント内 (イベントを介したWeb User Control LoadCompleteバインディングInit):

    protected void Page_Init(object sender, EventArgs e) {
      this.Page.LoadComplete += new EventHandler(Page_LoadComplete);
    }
    
    protected void Page_LoadComplete(object sender, EventArgs e) {
       String script = "$(document).ready(function() { $('.bxslider').bxSlider(); }";
       ScriptManager.RegisterStartupScript((Control)this.Page, this.Page.GetType(), new Guid().ToString(), script, true);
    }
    
  5. Modal Popup Extender OnLoadイベントで。

私は完全に迷っています。何か案は?

編集:ここでの正しい質問は次のとおりだと思います:Modal Popup Extenderロードされたときではなく、が表示されたときにのみ発生するメソッドを確立する方法はありますか?

4

2 に答える 2

0

よし、やっと解決。

解決策はTargetControlID、 modalpopup の をダミー ボタンに割り当ててから、実際にポップアップを開きたいコントロールを次のように宣言することでした。

<asp:Button id="Button1" runat="server" OnClientClick="$find('PopupBehaivourID').show(); setTimeout(function () { $('.bxslider').bxSlider(); }, 100); return false;" Text="Show me!" />

それは「汚い」方法で問題を解決するので、他の提案があれば大歓迎です。

于 2013-10-30T13:39:57.347 に答える