使用更新面板时,用户控件消失

时间:2011-03-03 17:40:48

标签: c# javascript asp.net user-controls updatepanel

我有一个用户控件,它充当我网站的页脚,并使用java脚本jqdock.js显示苹果类型底部菜单。我在usercontrol中添加了一个更新面板。我现在遇到的问题是,它最初工作正常,但是一旦我点击了usercontrol中的邮件按钮,整个用户控制就会消失,在回发后我猜。下面是usercontrol和代码视图:

enter code here

public void Page_Load(object sender,EventArgs e)     {

   // Page.ClientScript.RegisterClientScriptInclude("bottomMenu", "../js/jqDock.js");
    ScriptManager.RegisterClientScriptInclude(this,this.GetType(),"bottomMenu", "../js/jqDock.js");
    //ScriptManager.RegisterStartupScript(this, this.GetType(), "bottomMenu", "../js/jqDock.js",true);
   }

//设计视图

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ucBottomMenu.ascx.cs"
Inherits="uc_ucBottomMenu" %>
<div id="dockWrapper" style="position: fixed; background: url('user/use.png');
padding: 10px; margin: 0 auto; width: 700px; height: 100px;" class="noprint">

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div id="dock">

  <asp:PlaceHolder ID="phEmail" runat="server"><a id="hplEmail" runat="server">
        <src="/dock/email.png" title="Email" alt="Email" /></a> </asp:PlaceHolder>



         </asp:PlaceHolder>


</div>
</ContentTemplate>
</asp:UpdatePanel>

1 个答案:

答案 0 :(得分:0)

您需要在代码隐藏中注册启动脚本以调用函数来重新初始化您的jqDock。这是因为在UpdatePanel回发之后,<ContentTemplate></ContentTemplate>内的所有内容都被替换了。

<强>代码隐藏:

ScriptManager.RegisterStartupScript(this, GetType(), reInitjqDock, "reInitjqDock();", true);

<强>脚本:

//example
function reInitjqDock()
{
  jQuery('#dock').jqDock();
}