11

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

更新面板如下所示:

<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、ChildAsTriggers 等)。

没有任何区别 - 唯一真正导致异步回发的是使用触发器,但是更新面板中的其余内容没有更新,所以我得到了重复的内容。有任何想法吗?

4

2 回答 2

15

如果您的 UpdatePanel 无法将其内容呈现给 a <div>(例如,当它位于 内部时<tr>),则会发生完整回发。因此,请检查 UpdatePanel 中的 html,您可能会在那里找到答案(另外,寻找一些不正确的 xhtml,例如错误关闭的元素)。

于 2010-07-13T16:07:59.713 回答
0

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

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

如果没有脚本管理器,它将无法工作。

于 2010-07-13T15:45:05.630 回答