2013-05-30 64 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>