向导控件内的Gridview自定义分页在asp.net中无法正常工作

时间:2012-01-05 14:31:24

标签: asp.net gridview updatepanel paging wizard

我有一个页面,可以选择访客。

此页面包含一个更新面板,在更新面板中有一个向导控件,在向导控件中有一个gridview(Panel-> Update Panel - > wizard control - > gridview)

现在分页效果不好,我在互联网上搜索答案,但我找不到合适的答案。我使用自定义分页。

当我想更改页面编号(到第二页或最后一页)时,它可以正常工作。但是当我想选择一行或转到另一页时,gridview无法正常工作。当我在第二页或最后一页上选择A行时(其他页面不起作用),所选的guest(item)始终是第一页之一。当我想要更改到另一个页面(从第二页或最后一页)时,它不起作用并停留在所选页面上。

有没有办法解决这个问题?

部分代码:

               <asp:Panel ID="PnlRe" Style="display: none; ... >
    <asp:UpdatePanel ID="UpdtPnlDetail" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
        ...
        <asp:Wizard ID="wzd" runat="server" ... >
            ...
            <asp:WizardStep ID="WizardStep3" runat="server" Title="Naam">
                        ...
                           <asp:Gridview ID="Gridview1" runat="server" AutoGenerateColumns="False"
                               DataKeyNames="GastID,Versie" DataSourceID="odsGasten" EmptyDataText="...."
                               OnRowCommand="Gridview1_RowCommand" OnPageIndexChanging="Gridview1_PageIndexChanging"
                               OnPageSizeChanging="Gridview1_PageSizeChanging" OnSearching="Gridview1_Searching"
                               OnSorting="Gridview1_Sorting" OnRowDataBound="Gridview1_RowDataBound"
                               CausesValidation="False" meta:resourcekey="..." PagerType="Custom"
                               ShowFilter="True" ShowInsertRecord="True" ShowPageSizer="True" UseSubmitBehaviour="False">
                               <Columns>
                                   <asp:TemplateField ShowHeader="False" meta:resourcekey="...">
                                       <ItemTemplate>
                                           <asp:ImageButton runat="server" CommandName="Select" CausesValidation="False" SkinID="uprowbutton"
                                               ToolTip="..." ID="ImgBtnSelect" meta:resourcekey="...">
                                           </asp:ImageButton>
                                       </ItemTemplate>
                                   </asp:TemplateField>
                                   ... Boundfields ...
                               </Columns>
                           </asp:Gridview>
                        ...
                    </asp:WizardStep>
                    ... 
    </asp:Wizard>
    </ContentTemplate>
</asp:UpdatePanel>

protected void Gridview1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    this.odsGasten.FilterExpression = searchText;
    this.Gridview1.DataBind();
    this.UpdtPnlDetail.Update();
}

3 个答案:

答案 0 :(得分:0)

有一种棘手的方法来实现这一点,你必须操纵你的数据源。  例如,如果您使用数据表,则必须选择dt的前十个元素并将其绑定到网格,当单击下一个按钮时,获取dt的下十个元素并将其绑定到gridview。这将使您的任务变得简单,并为您的页面提供更高的性能。

答案 1 :(得分:0)

我可以看到this.GridView1.DataBind()在GridView1_PageIndexChanging中被调用,但是currentPageIndex在哪里存储并更新了你想要导航到的页面索引以及它何时发生?

答案 2 :(得分:0)

听起来像你有一个观点问题。

您需要确保在Init和Load之间设置了网格的源集,无论是来自viewstate还是来自新的绑定。