asp的 gridview自定义分页 怎么实现这 第2页/共10页 <首页><上一页>1 2 3 4 5 ....<下一页><尾页> 不用插件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp的 gridview自定义分页 怎么实现这 第2页/共10页 <首页><上一页>1 2 3 4 5 ....<下一页><尾页> 不用插件相关的知识,希望对你有一定的参考价值。

在gridview控件中插入PagerTemplate,附上代码:
<PagerTemplate>
当前第:
<asp:Label ID="LabelCurrentPage" runat="server" Text="<%# ((GridView)Container.NamingContainer).PageIndex + 1 %>"></asp:Label>
页/共:
<asp:Label ID="LabelPageCount" runat="server" Text="<%# ((GridView)Container.NamingContainer).PageCount %>"></asp:Label>

<asp:LinkButton ID="LinkButtonFirstPage" runat="server" CommandArgument="First" CommandName="Page"
Visible='<%#((GridView)Container.NamingContainer).PageIndex != 0 %>'>首页</asp:LinkButton>
<asp:LinkButton ID="LinkButtonPreviousPage" runat="server" CommandArgument="Prev"
CommandName="Page" Visible='<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>'>上一页</asp:LinkButton>
<asp:LinkButton ID="LinkButtonNextPage" runat="server" CommandArgument="Next" CommandName="Page"
Visible='<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>'>下一页</asp:LinkButton>
<asp:LinkButton ID="LinkButtonLastPage" runat="server" CommandArgument="Last" CommandName="Page"
Visible='<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>'>尾页</asp:LinkButton>
</PagerTemplate>

在.cs文件中插入实现函数,附代码:
protected void gvwDesignationName_PageIndexChanging(object sender, GridViewPageEventArgs e)

// 得到该控件
GridView theGrid = sender as GridView;
int newPageIndex = 0;
if (e.NewPageIndex == -3)

//点击了Go按钮
TextBox txtNewPageIndex = null;

//GridView较DataGrid提供了更多的API,获取分页块可以使用BottomPagerRow 或者TopPagerRow,当然还增加了HeaderRow和FooterRow
GridViewRow pagerRow = theGrid.BottomPagerRow;

if (pagerRow != null)

//得到text控件
txtNewPageIndex = pagerRow.FindControl("txtNewPageIndex") as TextBox;

if (txtNewPageIndex != null)

//得到索引
newPageIndex = int.Parse(txtNewPageIndex.Text) - 1;


else

//点击了其他的按钮
newPageIndex = e.NewPageIndex;

//防止新索引溢出
newPageIndex = newPageIndex < 0 ? 0 : newPageIndex;
newPageIndex = newPageIndex >= theGrid.PageCount ? theGrid.PageCount - 1 : newPageIndex;

//得到新的值
theGrid.PageIndex = newPageIndex;


希望能帮到你!!!
参考技术A 使用了gridview,为什么不使用它自带的分页控件?
感觉多此一举.

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

【中文标题】向导控件中的 Gridview 自定义分页在 asp.net 中无法正常工作【英文标题】:Gridview custom paging inside wizard control doesn't work correct in asp.net 【发布时间】:2012-02-03 09:00:14 【问题描述】:

我有一个可以选择客人的页面。

此页面包含一个更新面板,更新面板内有一个向导控件,向导控件中有一个gridview(面板->更新面板->向导控件->gridview)

现在分页效果不好,我在网上搜索了答案,但没有找到正确的答案。我使用自定义分页。

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

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

部分代码:

               <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();

【问题讨论】:

您正在使用有条件的 UpdatePanel,但我没有看到任何触发器。您是否忽略了它们或者您没有注册触发器?如果您需要将 UpdatePanel 保留为条件,我认为您需要将 PageIndexChanging 事件注册为触发器。 【参考方案1】:

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

【讨论】:

【参考方案2】:

我可以看到 this.GridView1.DataBind() 是在 GridView1_PageIndexChanging 中调用的,但是 currentPageIndex 存储在哪里并使用您要导航到的页面索引进行更新,以及在此过程中何时发生?

【讨论】:

【参考方案3】:

在我看来,您的视图状态存在问题。

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

【讨论】:

以上是关于asp的 gridview自定义分页 怎么实现这 第2页/共10页 <首页><上一页>1 2 3 4 5 ....<下一页><尾页> 不用插件的主要内容,如果未能解决你的问题,请参考以下文章

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

是否可以在不使用 ObjectDataSource 的情况下自定义 GridView(在 ASP.NET 中,最好是 3.5)分页?

Django实现自定义分页

asp.net中GridView怎样进行分页,编辑,删除操作

gridview中的自定义分页

gridview分页