问题 更新面板内的用户控件导致整页回发


我有一个用户控件,带有链接按钮(用于分页)和更新面板内的转发器。分页工作正常,但每次点击进入下一页时都会导致整页回发。

更新面板如下所示:

<asp:UpdatePanel ID="up1" runat="server" UpdateMode="Always">
        <ContentTemplate>
            <asp:Repeater ID="rptOrganizations" runat="server">
                <HeaderTemplate>
                    <table>
                        <thead>
                            <tr>
                                <th>Organization</th>
                                <th>State</th>
                                <th>Accredited Since</th>
                            </tr>
                        </thead>
                    </table>
                </HeaderTemplate>
                <ItemTemplate>
                    <tr>
                        <td>
                            <asp:Literal ID="ltlInstitution" runat="server" />
                        </td>
                        <td>
                            <asp:Literal ID="ltlState" runat="server" />
                        </td>
                        <td>
                            <asp:Literal ID="ltlAccreditedDate" runat="server" />
                        </td>
                    </tr>
                </ItemTemplate>
                <FooterTemplate>
                    </table>
                </FooterTemplate>
            </asp:Repeater>

            <uc2:RepeaterPaging ID="rpPager" runat="server" PageSize="10" OnNextButtonClickEvent="btnNext_Click" OnPreviousButtonClickEvent="btnPrev_Click" />
        </ContentTemplate>  
    </asp:UpdatePanel>

并且用户控件的内容如下所示:

<asp:LinkButton ID="btnPrev" runat="server" OnClick="btnPrev_Click">Previous</asp:LinkButton> | 
<asp:LinkButton ID="btnNext" runat="server" OnClick="btnNext_Click">Next</asp:LinkButton> 

&nbsp;&nbsp;
<asp:Literal ID="ltlNumResults" runat="server" /> results returned.

到目前为止,我已经尝试为用户控件添加异步回发触发器,这会导致异步回发,但不会更新更新面板中的其余文本。换句话说,发生异步回发并显示下一页,但转发器中的原始文本也位于其下方。

我还确认我在链接按钮上设置了IDS,因为这可以在更新面板中触发完整的回发。

我尝试更改更新面板模式(Always,Conditional,ChildrenAsTriggers等)。

它们没有任何区别 - 实际上导致异步回发的唯一方法是使用触发器,但更新面板中的其余内容未更新,因此我得到重复的内容。有任何想法吗?


11226
2017-07-13 15:06


起源

关于LinkBut​​tons缺少ID导致完整回发的信息,对我来说非常有用,欢呼! - paulH


答案:


如果您的UpdatePanel无法将其内容呈现给a,则会发生完全回发 <div> (例如,当它位于 <tr>)。所以检查一下UpdatePanel里面的html,你可能会在那里找到答案(同样,找一些不正确的xhtml,比如错误关闭的元素)。


15
2017-07-13 16:07



就是这样!如果您注意到标题模板内部,我不小心关闭了</ table>标记,而不是在页脚中关闭它。一旦我删除了错误形成的标签,它就开始工作了。我不知道更新面板是那么敏感...... - Neil
+1:我的UpdatePanel直接放在一个表格标签内,当它移出那里时,事情就开始起作用了。谢谢! - Dev F


删除更新模式=“始终”不要放任何东西,它应该工作。

还有一件事是您是否将脚本管理器添加到您的页面或控件中?

没有脚本管理器它将无法正常工作。


0
2017-07-13 15:45



我认为默认的更新模式总是 - 我删除它,但它没有什么区别。脚本管理器当前已添加到页面,而不是用户控件。 - Neil