知识大全 Asp.net中DataGrid控件的自定义分页
Posted 知
篇首语:宁愿跑起来被拌倒无数次 也不要规规矩矩走一辈子。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Asp.net中DataGrid控件的自定义分页相关的知识,希望对你有一定的参考价值。
Asp.net中DataGrid控件的自定义分页 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
使用DataGrid时自带的分页实现起来虽然比较方便 但是效率不高 每次都需要读取所有页(整个记录集) 而加载的只是其中一页 造成了资源的浪费 记录多又会使效率变得很低 下面通过DataGrid的自定义分页功能来减少资源使用和提高效率
实现的关键是设置AllowCustomPaging属性位True 并把VirtualItemCount属性设置位总的记录数 给分页提供依据 前台的主要代码如下
这里使用的数据源还是假设为Northwind的Customers表
下面是访问单页的存储过程 实现方式很多 不过这个是最普通的
CREATE PROCEDURE [GetCustomersDataPage]
@PageIndex INT
@PageSize INT
@RecordCount INT OUT
@PageCount INT OUT
AS
SELECT @RecordCount = COUNT(*) FROM Customers
SET @PageCount = CEILING(@RecordCount * / @PageSize)
DECLARE @SQLSTR NVARCHAR( )
IF @PageIndex = OR @PageCount <=
SET @SQLSTR =N SELECT TOP +STR( @PageSize )+
CustomerID CompanyName Address Phone FROM Customers ORDER BY CustomerID DESC
ELSE IF @PageIndex = @PageCount
SET @SQLSTR =N SELECT * FROM ( SELECT TOP +STR( @RecordCount @PageSize * @PageIndex )+
CustomerID CompanyName Address Phone FROM Customers ORDER BY CustomerID ASC ) TempTable ORDER BY CustomerID DESC
ELSE
SET @SQLSTR =N SELECT TOP +STR( @PageSize )+ * FROM ( SELECT TOP +STR( @RecordCount @PageSize * @PageIndex )+
CustomerID CompanyName Address Phone FROM Customers ORDER BY CustomerID ASC ) TempTable ORDER BY CustomerID DESC
EXEC (@SQLSTR)
GO
获取记录数和页数都采用存储过程的输出参数
获取数据源 这里返回一个DataSet
先定义了连个数据成员
private int pageCount;//页数
private int recordCount;//记录数
//获取单页数据
private static DataSet GetCustomersData(int pageIndex int pageSize ref int recordCount ref int pageCount)
string connString = ConfigurationSettings AppSettings[ ConnString ];
SqlConnection conn = new SqlConnection(connString);
SqlCommand m = new SqlCommand( GetCustomersDataPage conn);
m Parameters Add(new SqlParameter( @PageIndex SqlDbType Int));
m Parameters[ ] Value = pageIndex;
m Parameters Add(new SqlParameter( @PageSize SqlDbType Int));
m Parameters[ ] Value = pageSize;
m Parameters Add(new SqlParameter( @RecordCount SqlDbType Int));
m Parameters[ ] Direction = ParameterDirection Output;
m Parameters Add(new SqlParameter( @PageCount SqlDbType Int));
m Parameters[ ] Direction = ParameterDirection Output;
m CommandType = CommandType StoredProcedure;
SqlDataAdapter dataAdapter = new SqlDataAdapter(m);
DataSet ds = new DataSet();
dataAdapter Fill(ds);
recordCount = (int)m Parameters[ ] Value;
pageCount = (int)m Parameters[ ] Value;
return ds;
//绑定数据到DataGrid 同时刷新数据总记录数
private void DataGridDataBind()
DataSet ds = GetCustomersData(PageIndex PageSize ref recordCount ref pageCount);
this DataGrid VirtualItemCount = RecordCount;
this DataGrid DataSource = ds;
this DataGrid DataBind();
下面是分页的几个变量属性
public int PageCount
getreturn this DataGrid PageCount;
public int PageSize
getreturn this DataGrid PageSize;
public int PageIndex
getreturn this DataGrid CurrentPageIndex;
setthis DataGrid CurrentPageIndex = value;
public int RecordCount
getreturn recordCount;
注册DataGrid分页事件
//分页事件处理
private void DataGrid _PageIndexChanged(object source System Web UI WebControls DataGridPageChangedEventArgs e)
DataGrid dg = (DataGrid)source;
dg CurrentPageIndex = e NewPageIndex;
DataGridDataBind();
最好判断当前页面是否是第一次加载 防止重复加载两次数据
private void Page_Load(object sender System EventArgs e)
if(!Page IsPostBack)
DataGridDataBind();
显示界面如下
src= //img educity cn/img_ / / / gif width= border= >
cha138/Article/program/net/201311/11473相关参考
知识大全 ASP.NET中自定义DataGrid分页设置的实现
ASP.NET中自定义DataGrid分页设置的实现 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Asp.NET自定义DataGrid控件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一&nb
基于ASP.NET的自定义分页显示[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 引言
基于ASP.NET的自定义分页显示[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
基于ASP.NET的自定义分页显示[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
基于ASP.NET的自定义分页显示[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
使用ASP.Net中的自定义控件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! if((data
使用ASP.Net中的自定义控件[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &
使用ASP.Net中的自定义控件[5] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &
使用ASP.Net中的自定义控件[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &