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、ChildrenAsTriggersなど)を変更してみました。

違いはありません-非同期ポストバックを実際に引き起こす唯一のことはトリガーを使用することですが、更新パネルの残りのコンテンツは更新されないため、重複したコンテンツが表示されます。何か案は?

4

2 に答える 2

15

UpdatePanelがそのコンテンツをにレンダリングできない場合<div>(たとえば、の内部にある場合<tr>)、完全なポストバックが発生します。したがって、UpdatePanel内のhtmlを確認すると、そこに答えが見つかる可能性があります(また、誤って閉じられた要素など、誤ったxhtmlを探してください)。

于 2010-07-13T16:07:59.713 に答える
0

update mode="Always"を削除します。その上に何も置かないでください。機能するはずです。

もう1つ、スクリプトマネージャーをページに追加しますか、それともコントロールを追加しませんか?

スクリプトマネージャがないと機能しません。

于 2010-07-13T15:45:05.630 に答える