リンクボタン(ページングに使用)と更新パネル内のリピーターを備えたユーザーコントロールがあります。ページングは正しく機能しますが、クリックして次のページに移動するたびに、ページ全体のポストバックが発生します。
更新パネルは次のようになります。
<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>
<asp:Literal ID="ltlNumResults" runat="server" /> results returned.
これまで、ユーザーコントロールに非同期ポストバックトリガーを追加しようとしました。これにより、非同期ポストバックが発生しますが、更新パネルの残りのテキストは更新されません。つまり、非同期ポストバックが発生し、次のページが表示されますが、リピーターの元のテキストもそのすぐ下にあります。
また、リンクボタンにIDSが設定されていることも確認しました。これにより、更新パネル内で完全なポストバックがトリガーされる可能性があるためです。
更新パネルのモード(Always、Conditional、ChildrenAsTriggersなど)を変更してみました。
違いはありません-非同期ポストバックを実際に引き起こす唯一のことはトリガーを使用することですが、更新パネルの残りのコンテンツは更新されないため、重複したコンテンツが表示されます。何か案は?