数据库中有几万条数据,怎样使用aspnetpage分页控件结合数据库分页读取呢?
页面载入时使用了privatevoidSetPaging(DataTabledt){this.AspNetPager1.PageSize=GeneralConfigs.G...
页面载入时使用了
private void SetPaging(DataTable dt)
{
this.AspNetPager1.PageSize = GeneralConfigs.GetConfig().Paging;
if (dt == null || dt.Rows.Count <= 0)
{
this.AspNetPager1.RecordCount = 0;
return;
}
this.AspNetPager1.RecordCount = dt.Rows.Count;
dt.Dispose();
}
当中DataTable是在数据库中分页好的数据,还是数据库中的总记录呢?
如果是总记录的话查询效率很低,如果不是的话是不是要对数据库进行分页读取呢,
请求解决方法,尽量结合aspnetpage控件,没有也可以,或者提供一些实例,可发至邮箱:oypx1234@yahoo.cn,万分感谢! 展开
private void SetPaging(DataTable dt)
{
this.AspNetPager1.PageSize = GeneralConfigs.GetConfig().Paging;
if (dt == null || dt.Rows.Count <= 0)
{
this.AspNetPager1.RecordCount = 0;
return;
}
this.AspNetPager1.RecordCount = dt.Rows.Count;
dt.Dispose();
}
当中DataTable是在数据库中分页好的数据,还是数据库中的总记录呢?
如果是总记录的话查询效率很低,如果不是的话是不是要对数据库进行分页读取呢,
请求解决方法,尽量结合aspnetpage控件,没有也可以,或者提供一些实例,可发至邮箱:oypx1234@yahoo.cn,万分感谢! 展开
3个回答
展开全部
可以用存储过程分页
/*
函数名称: GetRecordFromPage
函数功能: 获取指定页的数据
参数说明: @tblName 包含数据的表名
@fldName 关键字段名
@PageSize 每页记录数
@PageIndex 要获取的页码
@OrderType 排序类型, 0 - 升序, 1 - 降序
@strWhere 查询条件 (注意: 不要加 where)
*/
CREATE PROCEDURE GetRecordFromPage
@tblName varchar(255), -- 表名
@fldName varchar(255), -- 字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(2000) = '' -- 查询条件 (注意: 不要加 where)
AS
declare @strSQL varchar(6000) -- 主语句
declare @strTmp varchar(1000) -- 临时变量
declare @strOrder varchar(500) -- 排序类型
if @OrderType != 0
begin
set @strTmp = '<(select min'
set @strOrder = ' order by [' + @fldName + '] desc'
end
else
begin
set @strTmp = '>(select max'
set @strOrder = ' order by [' + @fldName +'] asc'
end
set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'
+ @strOrder
if @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' '
+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder
if @PageIndex = 1
begin
set @strTmp = ''
if @strWhere != ''
set @strTmp = ' where (' + @strWhere + ')'
set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
+ @tblName + ']' + @strTmp + ' ' + @strOrder
end
exec (@strSQL)
GO
/*
函数名称: GetRecordFromPage
函数功能: 获取指定页的数据
参数说明: @tblName 包含数据的表名
@fldName 关键字段名
@PageSize 每页记录数
@PageIndex 要获取的页码
@OrderType 排序类型, 0 - 升序, 1 - 降序
@strWhere 查询条件 (注意: 不要加 where)
*/
CREATE PROCEDURE GetRecordFromPage
@tblName varchar(255), -- 表名
@fldName varchar(255), -- 字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(2000) = '' -- 查询条件 (注意: 不要加 where)
AS
declare @strSQL varchar(6000) -- 主语句
declare @strTmp varchar(1000) -- 临时变量
declare @strOrder varchar(500) -- 排序类型
if @OrderType != 0
begin
set @strTmp = '<(select min'
set @strOrder = ' order by [' + @fldName + '] desc'
end
else
begin
set @strTmp = '>(select max'
set @strOrder = ' order by [' + @fldName +'] asc'
end
set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'
+ @strOrder
if @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' '
+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder
if @PageIndex = 1
begin
set @strTmp = ''
if @strWhere != ''
set @strTmp = ' where (' + @strWhere + ')'
set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
+ @tblName + ']' + @strTmp + ' ' + @strOrder
end
exec (@strSQL)
GO
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sql 查询语句:
1、获取数据总条数:select count(*) from table
2、分页查询:
select * from (
select
ROW_NUMBER() OVER(order by ID DESC) AS RowNumber,
* from table
) as T WHERE T.RowNumber BETWEEN @LowerPage AND @UpperPage
C#代码:
private void BindData(int PageIndex)
{
AspNetPager1.PageSize=20;
int LowerPage=PageIndex*AspNetPager1.PageSize+1;
int UpperPage=LowerPage+AspNetPager1.PageSize-1;
DataTable dt="";//执行查询语句2,获取数据源。 @LowerPage =LowerPage,@UpperPage=UpperPage
AspNetPager1.RecordCount="";//执行查询语句1,获取数据总数
}
1、获取数据总条数:select count(*) from table
2、分页查询:
select * from (
select
ROW_NUMBER() OVER(order by ID DESC) AS RowNumber,
* from table
) as T WHERE T.RowNumber BETWEEN @LowerPage AND @UpperPage
C#代码:
private void BindData(int PageIndex)
{
AspNetPager1.PageSize=20;
int LowerPage=PageIndex*AspNetPager1.PageSize+1;
int UpperPage=LowerPage+AspNetPager1.PageSize-1;
DataTable dt="";//执行查询语句2,获取数据源。 @LowerPage =LowerPage,@UpperPage=UpperPage
AspNetPager1.RecordCount="";//执行查询语句1,获取数据总数
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//从TBL_Books表中查询top pageSize 的记录,条件是bookId不等于当前页数前查询过的数据,order By可要可不要 } 在页面写类似存储过程的方法就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询