UpdatePanel PreRender后,转发器内容不可见

时间:2014-05-14 13:06:08

标签: c# updatepanel repeater updateprogress prerender

我有一个转发器,我试图在页面加载后加载并偶然发现PreRender事件。我已经完成了所有设置,但转发器的内容没有显示 - 奇怪的是,当我检查html时,代码就在那里,只是没有在浏览器中显示。

    <asp:updatepanel id="panel1" runat="server" updatemode="Conditional" onprerender="upUpdatePanel_PreRender">
<contenttemplate>
<asp:repeater runat="server" id="mainContentRptr" onitemdatabound="bindDepts">
<headertemplate>
<div id="products-tabs-content" class="row tab-content">
    </headertemplate>
    <itemtemplate>
    <div class="tab-pane" id='<%# eval("dept_id") %>
        '> <asp:repeater runat="server" id="prodRepeater" onitemcommand="itemToCart">
        <headertemplate>
        .... </headertemplate>
        <itemtemplate>
        .... <asp:repeater runat="server" id="condRptr">
        <headertemplate>
        .... </headertemplate>
        <itemtemplate>
        .... </itemtemplate>
        <footertemplate></footertemplate>
        </asp:repeater>
        </itemtemplate>
        <footertemplate>
    </div>
    </footertemplate>
    </asp:repeater>
</div>
<!-- End .tab-pane -->
</itemtemplate>
<footertemplate>
</footertemplate>
</asp:repeater>
</contenttemplate>
</asp:updatepanel>

正如你可以看到一些嵌套的转发器......我也有我的UpdateProgress控件

<asp:UpdateProgress id="updateProgress" runat="server" AssociatedUpdatePanelID="panel1">
                                        <ProgressTemplate>
                                            <div style="position: relative; text-align: center; height: 100%; width: 100%; background-color: white; opacity: 0.7;margin:0 auto">
                                                <asp:Image ID="imgUpdateProgress" runat="server" ImageUrl="images/loader.GIF" AlternateText="Loading ..." ToolTip="Loading ..." style="padding: 10px; position: relative; top: 45%;margin: 0 auto" />
                                                <br/>
                                                <span style="font-size: 16pt;font-weight: bold">Bulding your menu</span>
                                                <br/>
                                                <span>Please wait</span>
                                            </div>
                                        </ProgressTemplate>
                                    </asp:UpdateProgress>

然后以下内容触发延迟加载

<script language="javascript" type="text/javascript">
                                        function pageLoad(sender, e) {
                                            if (!e.get_isPartialLoad()) {
                                                __doPostBack('<%= panel1.ClientID %>', 'aaaa');
                                            }
                                        }
                                    </script>

和服务器端......

protected void upUpdatePanel_PreRender(object sender, EventArgs e)
        {
            if (Request["__EVENTTARGET"] == panel1.ClientID &&
                Request.Form["__EVENTARGUMENT"] == "aaaa")
            {
                populateRepeaters(); //This has databind for each repeater
            }
        }

这可以在没有预渲染的情况下工作,但加载速度会因数据等而异,所以我希望在页面加载后加载它。

任何帮助都会受到赞赏! :)

1 个答案:

答案 0 :(得分:0)

转发器位于更新面板之外,控制着上面所有内容的可见性。它是在prerender事件中填充但没有显示。我把它移到面板中,每个人现在都在工作