2011-11-09 24 views
2

データ入力usercontrolがupdatepanelでラップされた在庫jQueryダイアログdivがあります。それは最初のポストバックまで素晴らしいです。その後、スタイルはまったく適用されません。 (コントロールは値を保持し、イベントは期待どおりに動作し続けます)。ダイアログを閉じた後、ポストバックがあった場合、後続の.dialog( "open")コールにスタイルが適用されません。ポストバック後にCSSスタイルがjQueryダイアログに再適用されない

$(function() { 
     var dlg = jQuery("#EventMod").dialog({ 
      autoOpen: false 
      , modal: true 
     }); 
     dlg.parent().appendTo(jQuery("form:first")); 

     $(".NewEvent").click(function() { 
      $("#EventMod").dialog("open"); 
      return false; 
     }); 
    }); 

ダイアログdivがここにある:

<div id="EventMod" title="Event Modify" class="ui-helper-hidden"> 
    <asp:UpdatePanel ID="updNewEvent" runat="server"> 
     <ContentTemplate> 
      <uc1:EventEdit ID="NewEvent" runat="server" /> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
</div> 

ユーザーコントロールクラスが動的に割り当てられていない、彼らはこのように表示されます。

<table class="NewEvent" > 
     <tr> 
      <td align="center"> 
       <table class="Event"> 
        <tr class="Title"> 
         <th width="55"> 
          <strong>Event #</strong> 
         </th> 
    ... snip ... 

私は親ページにリンクされたスタイルシートを持っています。私はそれをusercontrolに追加してみましたが、目に見える結果はありませんでした。

答えて

2

私は前にこのようなすごみを持っていたUpdatePanel以内に安定した結果を得るためにこれをしなければならなかった:

$(function() { 

     var titleText="This is the title" 
     var key = "uniqueId"; 
     var newParentDiv= "#" + key; 
     var div = $("<div title='" + titleText + "' id='" + key+ "'></div>"); 
     $('body').append(div); 
     $(newParentDiv).html($("#EventMod").html()); 

     var dlg = jQuery(newParentDiv).dialog({ 
      autoOpen: false 
      , modal: true 
     }); 
     dlg.parent().appendTo(jQuery("form:first")); 

     $(".NewEvent").click(function() { 
      $(newParentDiv).dialog("open"); 
      return false; 
     }); 
    }); 

問題を私のためには、jQueryのダイアログが実際にDOM内の新しい場所にコンテンツを移動していることでした。部分的なポストバックが発生した場合、jQuery UIがダイアログを置くDOMを更新しないと、ダイアログが古くなったり、ハングアップしたりします。

+0

私はこれを行い、私はポストバックを失った。最初にdlg.parent()。appendTo(jQuery( "form:first"))を追加します。私はDOMにdivを追加することを考えました。 uniqueIDは '#'にする必要がありますか? –

+0

ええ、あなたはそれを再生する必要があります、私はデータベースの値から私のuniqueIdを渡し、あなたはControl.ClientIDを試すことができます。 –

+0

私はこれで今働いています。 Tanx! –

関連する問題