gridview分页模型 gridview分页加载更多

GridView的本身支持分页,一般情况下我们可以通过如下几个步骤实现分页:

1、更改GrdView控件的AllowPaging属性为true;

2、更改GrdView控件的PageSize属性为一个数值(默认为10);

3、更改GrdView控件的PageSetting属性;

4、为GridView添加事件:OnPageIndexChanging

大多数情况下通过上边的步骤就可以实现GridView的分页了,当然很多代码需要你自己来写。

但是有时候我们需要自定义分页模板,还希望能通过更统一以及更少的代码来实现这个分页功能。考虑到这些问题,我实现了一个通用的GridView分页模型,发布出来,仅供大家参考。

1、创建一个基础页面类

BasePage,继承System.Web.UI.Page

在这个基类中,创建几个通用的分页属性和方法,然后需要分页的页面都继承这个基类。

查看源代码

打印?

public class BasePage : System.Web.UI.Page

{

public BasePage()

{

}

#region 分页相关属性和方法

/// <summary>

/// 总的记录数,目前仅用于自定义记录数

/// </summary>

protected int GridView_RecordCount = 0;

/// <summary>

/// 使用自定义的记录数

/// 需要设置GridView_RecordCount

/// 如果一次性绑定全部数据,不需要使用自定义,GridView可以通过DataSource自己获取

/// </summary>

protected bool IsUseCustomRecordCount = false;

/// <summary>

/// 实现GridView数据绑定的虚方法

/// 在具体的页面类中重写这个方法,在PageTurn方法中就会调用重写的方法,以实现分页后的数据重新绑定

/// </summary>

protected virtual void GridView_DataBind()

{

}

/// <summary>

gridview分页模型 gridview分页加载更多
/// 分页页码跳转

/// </summary>

/// <param name="sender">跳转按钮</param>

/// <param name="e"></param>

protected void GridView_PageTurn(object sender, EventArgs e)

{

System.Web.UI.WebControls.Button btnGoPage;

System.Web.UI.WebControls.GridView GridView1;

System.Web.UI.WebControls.TextBox txtGoPage;

try

{

btnGoPage = (System.Web.UI.WebControls.Button)sender;

GridView1 = (System.Web.UI.WebControls.GridView)btnGoPage.NamingContainer.Parent.Parent;

txtGoPage = (System.Web.UI.WebControls.TextBox)GridView1.BottomPagerRow.FindControl("txtGoPage");

}

catch

{

MessageBox.Show(this.Page, "页码输入框和跳转按钮都必须在GridView的分页模板中!");

return;

}

int pageIndex = 1;

bool goSuccess = false;

if (!string.IsNullOrEmpty(txtGoPage.Text.Trim()))

{

if (int.TryParse(txtGoPage.Text.Trim(), out pageIndex))

{

pageIndex--;

if (pageIndex >= 0 && pageIndex < GridView1.PageCount)

{

goSuccess = true;

GridView1.PageIndex = pageIndex;

GridView_DataBind();

}

}

}

if (!goSuccess)

{

MessageBox.Show(this.Page, "无效的页码!");

return;

}

}

/// <summary>

/// 页码改变时触发

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

protected void GridView_PageIndexChanging(object sender, System.Web.UI.WebControls.GridViewPageEventArgs e)

{

System.Web.UI.WebControls.GridView GridView1 = sender as System.Web.UI.WebControls.GridView;

GridView1.PageIndex = e.NewPageIndex;

GridView_DataBind();

}

/// <summary>

/// GridView数据绑定完毕之后触发,显示记录数

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

protected void GridView_DataBound(object sender, EventArgs e)

{

//获取当前GridView

System.Web.UI.WebControls.GridView GridView1 = sender as System.Web.UI.WebControls.GridView;

if (GridView1.BottomPagerRow == null)

{

return;

}

//总是显示分页行

GridView1.BottomPagerRow.Visible = true;

System.Web.UI.WebControls.Label lblRecorCount = (System.Web.UI.WebControls.Label)GridView1.BottomPagerRow.FindControl("lblRecorCount");

if (IsUseCustomRecordCount)

{

lblRecorCount.Text = GridView_RecordCount.ToString();

}

else

{

if (GridView1.DataSource == null)

{

return;

}

//根据数据类型,动态获取绑定的数据源的记录数

if (GridView1.DataSource.GetType() == typeof(DataView))

{

lblRecorCount.Text = ((DataView)GridView1.DataSource).Count.ToString();

}

else if (GridView1.DataSource.GetType() == typeof(DataTable))

{

lblRecorCount.Text = ((DataTable)GridView1.DataSource).Rows.Count.ToString();

}

else if (GridView1.DataSource.GetType() == typeof(DataSet))

{

lblRecorCount.Text = ((DataSet)GridView1.DataSource).Tables[0].Rows.Count.ToString();

}

else if (GridView1.DataSource is Array)

{

lblRecorCount.Text = ((Array)GridView1.DataSource).Length.ToString();

}

else if (GridView1.DataSource.GetType() is System.Collections.IList)

{

lblRecorCount.Text = ((System.Collections.IList)GridView1.DataSource).Count.ToString();

}

else if (GridView1.DataSource.GetType() is System.Collections.ICollection)

{

lblRecorCount.Text = ((System.Collections.ICollection)GridView1.DataSource).Count.ToString();

}

else

{

TspOALog.Write("绑定到GridView的数据类型未知:" + GridView1.DataSource.GetType());

}

}

}

#endregion

}

2、页面cs文件继承基类:BasePage

public partial class NewsList: BasePage

3、在页面添加一个GridView并设置相关属性

查看源代码

打印?

<asp:GridView ID="GridView1" BorderStyle="Solid" BorderWidth="1px" BorderColor="#73B7EA"

Width="100%" runat="server" AutoGenerateColumns="False" HorizontalAlign="Center"

BackColor="White" CellPadding="4" GridLines="None" OnPageIndexChanging="GridView_PageIndexChanging" PageSize="10"

AllowPaging="true" OnDataBound="GridView_DataBound">

<Columns>...</Columns>

<PagerTemplate>

<div><span>

共有<asp:label id="lblRecorCount" runat="server"></asp:label>条记录&nbsp;

第<asp:Label ID="lblcurPage" ForeColor="Blue" runat="server" Text='<%# ((GridView)Container.Parent.Parent).PageIndex+1 %>'></asp:Label>页/共<asp:Label ID="lblPageCount" ForeColor="blue" runat="server" Text='<%# ((GridView)Container.Parent.Parent).PageCount %>'></asp:Label>页</span>&nbsp;&nbsp;

<asp:LinkButton ID="cmdFirstPage" runat="server" CommandName="Page" CommandArgument="First" Enabled="<%# ((GridView)Container.Parent.Parent).PageIndex!=0 %>">首页</asp:LinkButton>&nbsp;

<asp:LinkButton ID="cmdPreview" runat="server" CommandArgument="Prev" CommandName="Page" Enabled="<%# ((GridView)Container.Parent.Parent).PageIndex!=0 %>">上一页</asp:LinkButton>&nbsp;

<asp:LinkButton ID="cmdNext" runat="server" CommandName="Page" CommandArgument="Next" Enabled="<%# ((GridView)Container.Parent.Parent).PageIndex!=((GridView)Container.Parent.Parent).PageCount-1 %>">下一页</asp:LinkButton>&nbsp;

<asp:LinkButton ID="cmdLastPage" runat="server" CommandArgument="Last" CommandName="Page" Enabled="<%# ((GridView)Container.Parent.Parent).PageIndex!=((GridView)Container.Parent.Parent).PageCount-1 %>">尾页</asp:LinkButton>&nbsp;&nbsp;

到<asp:TextBox ID="txtGoPage" runat="server" Text='<%# ((GridView)Container.Parent.Parent).PageIndex+1 %>' Width="30px" CssClass="simpletextbox"></asp:TextBox>页

<asp:Button ID="Button3" runat="server" Width="40px" OnClick="GridView_PageTurn" Text="跳转" CssClass="simplebutton" /></div>

</PagerTemplate>

</asp:GridView>

主要是:

AllowPaging:允许GridView分页

PageSize:默认10

OnDataBound:绑定到基类的事件,用于显示总记录数

OnPageIndexChanging:绑定到基类的事件,用于分页的数据处理

PagerTemplate:包括记录数,当前页,总页数,首页,尾页,上一页,下一页,页码跳转

其中页码跳转事件绑定到基类中的:GridView_PageTurn

4、最后编写获取数据的方法

重写基类的GridView_DataBind方法:其中查询数据,然后绑定到GridView。

查看源代码

打印?

protected override void GridView_DataBind()

{

//获取数据,可以是获取全部,也可以是只获取当前页数据

...

//如果你想自己设置总记录数,可以使用IsUseCustomRecordCount

//这种情况适合分页获取少量数据的情况

IsUseCustomRecordCount=true;

GridView_RecordCount=10000;

//绑定数据到GridView

GridView1.DataSource = dv;

GridView1.DataBind();

}

以后只要有需要分页的列表,继承BasePage,然后设置相关属性,编写数据获取代码就可以了。不必在每个页面都编写OnPageIndexChanging,OnDataBound,以及页码跳转的代码,统一实现,节省工作量。

你还可以使用统一的PageSize,只需要在BasePage添加一个属性,然后在GridView中设置PageSize的属性。

  

爱华网本文地址 » http://www.413yy.cn/a/25101011/67715.html

更多阅读

驱动加载失败怎么解决? 代练猫加载驱动失败

源:U大师当我们想要重新去更新加载驱动,难免会遇到驱动加载失败的情况,此时该如何处理?今天小编就来教大家在驱动出现加载失败时如何解决的方法。故障原因一、驱动加载失败可能原因是驱动程序本身不完全,其次就是在下载更新

加载SolidWorks宏格式*.swb 模型文件 solidworks人体3d模型

加载SolidWorks宏格式(*.swb)模型文件——简介由LinkAble PARTcommunity下载的SolidWorks模型文件,由包含SolidWorks宏文件(SWB扩展名)的ZIP压缩包提供,请按照如下方法加载模型数据。SWB文件的优势,不丢失螺纹、色彩和装配等特征,且文件容

怎么取消禁用加载项 ie禁用加载项怎么查看

怎么取消禁用加载项——简介如何管理加载项,启用或禁用加载项?加载项是浏览器的一项设置,下面以IE浏览器举例讲述。怎么取消禁用加载项——方法/步骤怎么取消禁用加载项 1、打开浏览器,在命令栏点击工具下拉列表:怎么取消禁用加载项 2

3dmax中怎样加载材质贴图 3dmax缺少贴图坐标

3dmax中怎样加载材质贴图——简介 3dsmax中如何加载贴图,这个是个初级问题,非常简单,3dsMAX中可以加载如jpg、bmp、png、psd等等格式的贴图!我们常用的也是位图贴图方式!如何加载贴图文件呢请看下图我一步一步给大家讲解。3dmax中怎样加

srt字幕如何加载 精 如何加载srt字幕

? ? 当您通过网络下载了一部外国大片想欣赏时,却是英文版。而现在有很多字幕组织提供了影片的中文字幕文档供下载,比如扩展名为srt的字幕文档。? ? 通常我们在网上看到一个srt字幕文件的同时,应该还有一个视频格式的文件,比如AVI。这个

声明:《gridview分页模型 gridview分页加载更多》为网友花开花落分享!如侵犯到您的合法权益请联系我们删除