【问题标题】:Having issue for rendering user control after async postback异步回发后呈现用户控制的问题
【发布时间】:2012-10-17 12:26:22
【问题描述】:

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

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

MyPage.aspx(放置在母版页的内容占位符中)

<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 秒后调用异步回发时,我看不到用户控件。使用萤火虫,我看到用户控件在那里。但是它们不会被渲染;即使我在异步回发中再次创建它们。它们似乎是空的。帮助。

【问题讨论】:

  • 你能告诉我page_load事件代码吗?
  • protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { GetData(); // 从数据库中获取数据 LoadUserControls(); // 创建包含用户控件的动态表 } }

标签: c# javascript asp.net


【解决方案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

【讨论】:

  • 链接看起来很有希望。我试试看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 2021-05-11
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多