2013-05-30 89 views
1

我使用以下JQuery UI代碼與asp.net控件。更新面板刪除jquery樣式

<script type="text/javascript"> 

     $(document).ready(function() { 

      $(".Accordion").accordion({ 
       heightStyle: "content" 
      }); 

      $(".special").button(); 

      $(".radio").buttonset(); 

      //$(".tabs").tabs(); 
      $(".tabs").tabs(); 

     }); 

    </script> 

和代碼工作正常,直到我決定把我所有的控件放在更新面板中。回帖後,所有樣式都從控件中刪除。 有什麼問題?

回答

4

您應修改腳本,因爲$(文件)。就緒()不更新面板工作:

function InitCss() { 

     $(".Accordion").accordion({ 
      heightStyle: "content" 
     }); 

     $(".special").button(); 

     $(".radio").buttonset(); 

     //$(".tabs").tabs(); 
     $(".tabs").tabs(); 

    } 

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(InitCss); 

從後臺代碼相同:

protected void Page_Load(object sender, EventArgs e) 
    { 
if (!this.Page.ClientScript.IsStartupScriptRegistered("InitCss")) 
     { 
      string script = @"function InitCss() { 

     $("".Accordion"").accordion({ 
      heightStyle: ""content"" 
     }); 

     $("".special"").button(); 

     $("".radio"").buttonset(); 

     //$("".tabs"").tabs(); 
     $("".tabs"").tabs(); 

    } 

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(InitCss);"; 
      ScriptManager.RegisterStartupScript(Page, Page.GetType(), "InitCss", script, true); 
     } 
} 
+0

**我已嘗試過您的代碼,但仍無法工作。它顯示錯誤消息「Error:'Sys'is undefined」頁面第一次加載時** –

+0

是的,如果Sys對象沒有出現在頁面上,直到頁面未滿載,纔會發生這種情況。您可以在外部js文件 –

+0

中取出您的javascriptcode。Sys.WebForms.PageRequestManager.getInstance()僅適用於部分回發。 Sys.WebForms.PageRequestManager.getInstance()。add_pageLoaded(InitCss)工作部分和完整回發。它保證你的組件將被初始化 –

1

你的初始化將只在文檔就緒(不在回發)上運行。由於您將控件放置在UpdatePanel中,因此在回發後任何內容都會更新。你也應該在回發之後調用初始化。將此代碼添加到您的現有腳本旁邊:

<script type="text/javascript"> 
var prm = Sys.WebForms.PageRequestManager.getInstance(); 

prm.add_endRequest(function(s, e) { 
    $(".Accordion").accordion({ 
       heightStyle: "content" 
      }); 

      $(".special").button(); 

      $(".radio").buttonset(); 

      //$(".tabs").tabs(); 
      $(".tabs").tabs(); 
}); 
</scipt>