0

そのうちの1つにグリッドビューが含まれている2つの更新パネルを取得しました。問題は、ページネーションが最初だけ正しく機能することです。

マークアップは次のとおりです。

<asp:UpdatePanel ID="upAnswers" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
    <ContentTemplate>
        <asp:GridView ID="gvAnswers" runat="server" CssClass="gv" Width="100%" ShowHeader="false" AllowPaging="True" PageSize="2" EnableSortingAndPagingCallbacks="true" OnPageIndexChanging="gvAnswers_PageIndexChanging" AutoGenerateColumns="False" AlternatingRowStyle-BackColor="#eee">
            <Columns>
                <asp:TemplateField HeaderText="Questions" ShowHeader="False">
                    <ItemTemplate>
                        <asp:Label ID="lblQuestions" onclick=<%# Eval("FaqID", "$('.lblAnswers_{0}').toggle('fast')") %> CssClass="block" runat="server" Text='<%# Eval("Title") %>'></asp:Label>
                        <asp:Panel ID="pnlS1" runat="server" CssClass='<%# Eval("FaqID", "lblAnswers_{0}") %>' style="display: none;">
                            <asp:Label ID="Label1" runat="server" Text='<%# Eval("Question") %>' CssClass="block bold"></asp:Label>
                            <asp:Label ID="lblAnswers" runat="server" Text='<%# Eval("Answer") %>'></asp:Label>
                        </asp:Panel>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress ID="upgAnswers" runat="server" AssociatedUpdatePanelID="upAnswers" DisplayAfter="300">
    <ProgressTemplate>
        <div id="uiBlock" class="uiBlock">
        </div>
    </ProgressTemplate>
</asp:UpdateProgress>

および背後にあるコード:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        GetAnsweredPublicFAQs();
    }
}

protected void GetAnsweredPublicFAQs()
{
    DataSet ds = cFAQs.getAnsweredPublicFAQs();

    gvAnswers.DataSource = ds;
    gvAnswers.DataBind();
}

protected void gvAnswers_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    gvAnswers.PageIndex = e.NewPageIndex;
    GetAnsweredPublicFAQs();
    gvAnswers.DataBind();
    upAnswers.Update();
}

参考までに、私は ASP.NET 4.0 C# を使用しています。

どんな親切な助けも大歓迎です。

よろしく、カルド

4

1 に答える 1

3

UpdatePanel 宣言を次のように変更します。

<asp:UpdatePanel ID="upAnswers" runat="server" UpdateMode="Conditional">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="gvAnswers" EventName="PageIndexChanging" />

これらの s で問題が発生したときはいつでもUpdatePanel、 Triggers を明示的に宣言すると役立つことがわかりました。特に、「デフォルト以外」のイベントを使用して AsyncPostBack をトリガーする場合 (SelectedIndexChanged は GridView の「デフォルト」イベントです)。

また、ChildrenAsTriggers はデフォルトで true になっているので、マークアップから削除しました。

于 2013-09-20T15:31:08.047 に答える