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>
/// 分页页码跳转
/// </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>条记录
第<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>
<asp:LinkButton ID="cmdFirstPage" runat="server" CommandName="Page" CommandArgument="First" Enabled="<%# ((GridView)Container.Parent.Parent).PageIndex!=0 %>">首页</asp:LinkButton>
<asp:LinkButton ID="cmdPreview" runat="server" CommandArgument="Prev" CommandName="Page" Enabled="<%# ((GridView)Container.Parent.Parent).PageIndex!=0 %>">上一页</asp:LinkButton>
<asp:LinkButton ID="cmdNext" runat="server" CommandName="Page" CommandArgument="Next" Enabled="<%# ((GridView)Container.Parent.Parent).PageIndex!=((GridView)Container.Parent.Parent).PageCount-1 %>">下一页</asp:LinkButton>
<asp:LinkButton ID="cmdLastPage" runat="server" CommandArgument="Last" CommandName="Page" Enabled="<%# ((GridView)Container.Parent.Parent).PageIndex!=((GridView)Container.Parent.Parent).PageCount-1 %>">尾页</asp:LinkButton>
到<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的属性。
更多阅读
驱动加载失败怎么解决? 代练猫加载驱动失败
源: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。这个