在异步回发后出现渲染用户控制的问题

时间:2012-10-17 12:26:22

标签: c# javascript asp.net

我在母版页中有脚本管理器:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptLocalization ="true" EnableScriptGlobalization ="true" EnablePartialRendering="true" >
</asp:ScriptManager>

MyPage.aspx(放置在母版页的contentplaceholder中)

<asp:UpdatePanel ID="upMain" runat="server" UpdateMode="Conditional" EnableViewState="true">
  <Triggers>
    <asp:AsyncPostBackTrigger ControlID="btnRefresh" EventName="Click" />
  </Triggers>
    <ContentTemplate>
        <asp:PlaceHolder ID="placeHolder1" runat="server" EnableViewState="true"></asp:PlaceHolder>
            </ContentTemplate>
</asp:UpdatePanel>

MyPage.aspx脚本:

    $(document).ready(function () {
        setInterval(myfun, 20000);
    });

    function myfun() {
        var btn = document.getElementById('<%=btnRefresh.ClientID%>');
                    btn.click();
    }

在占位符上,我将动态创建的表包含用户控件。 在页面加载中,我可以在页面上看到用户控件。但是当20秒后调用异步回发时,我看不到用户控件。使用firebug,我看到用户控件在那里。但他们没有得到渲染;即使我在异步回发上再次创建它们。他们似乎是空的。帮助

1 个答案:

答案 0 :(得分:1)

试试这段代码。您需要在每个页面回发上创建控件。

protected void Page_Load(object sender, EventArgs e) 
{ 
     if (!Page.IsPostBack) 
      { 
           GetData(); // get data from database 
      } 
           LoadUserControls(); // Create dynamic table containing user controls 

} 

我想你应该读这个。 Loading UserControl Dynamically in UpdatePanel