小弟新手
目前在做一项目
对于分页问题
要求查询效率要高
想问一下大家有什么有什么好做法另外想问一下
如果用SqlDataAdapter.Fill方法做分页的话效率如何
据说它不用取出所有数据
不知道是不是真的
目前在做一项目
对于分页问题
要求查询效率要高
想问一下大家有什么有什么好做法另外想问一下
如果用SqlDataAdapter.Fill方法做分页的话效率如何
据说它不用取出所有数据
不知道是不是真的
解决方案 »
- 从数据库中读取数据后怎么把数据放入div中?
- 请问大家一般是使用什么编辑器,我现在用freetextbox,fckeditor
- 请教C# 的Struct的应用例子,请介绍一下
- 如何让框加随内容的大小而改变大小?(母版页就要怎么做?)
- 如何使用Request.Form传递参数
- 哪里有.net框架程序设计的中文电子版下载?
- asp.net gridview中 有下一级信息如何做删除限制?
- 几个asp小问题???????????????
- 在B.aspx中如何接收A.aspx传来的数据?
- vs2010调试问题
- asp.net sqlserver 如何用一段代码来实现查询功能
- flash 8 和 flash mx 2004哪个网络性能比较好,哪个与.net结合更紧密?高手帮忙指点迷津
只要把gridview的分页属性设置为TRUE就可以了
用用存储过程分页,如:
EXEC p_splitpage @sql, @PageIndex ,@PageSize,0p_splitpage 系统存储过程
@sql 为查询语句
@PageIndex 为起始页
,@PageSize 每页多少条记录
0 随便写的 不知道什么意思
http://www.codeproject.com/aspnet/PagingLarge.asp我用的方法:(注意-----)
CREATE PROCEDURE [dbo].[usp_GetCompanyList]
@condition varchar(200),
@pagesize int,
@currentpage int,
@pagecount int out,
@rowcount int out
AS
BEGIN
CREATE TABLE #Temp(
[TempId] [int] IDENTITY(1,1) NOT NULL,
---------------
)
declare @sql varchar(1000)
set @sql = 'INSERT INTO #Temp (------------------)
SELECT ------ FROM [dbo].[Company] as C
join [dbo].[Server] as S on C.[ServerId]=S.[ServerId] where C.[IsDeleted]=0 '
if (@condition is not null and @condition<>'')
begin
set @sql = @sql + ' and ' + @condition
end
set @sql = @sql + ' order by C.[CompanyId] desc' exec(@sql) --返回总记录数
select @rowcount = count(0) from #Temp
--返回总页数
set @pagecount = ceiling(@rowcount * 1.0/@pagesize) --临时表的起始Id
declare @FromId int
set @FromId = (@currentpage - 1) * @pagesize + 1
--临时表的结束Id
declare @ToId int
set @ToId = @currentpage * @pagesize select * from #Temp where TempId between @FromId and @ToId
END
----这个是填充dataset和分页有什么关系,没听说过啊
可以在填充的时候指定起始记录和要取记录的数量
--------------------------------------public System.Int32 Fill ( System.Data.DataSet dataSet , System.Int32 startRecord , System.Int32 maxRecords , System.String srcTable )
System.Data.Common.DbDataAdapter 的成员摘要:
在 System.Data.DataSet 的指定范围中添加或刷新行以匹配使用 System.Data.DataSet 和 System.Data.DataTable 名称的数据源中的行。 参数:
dataSet: 要用记录和架构(如果必要)填充的 System.Data.DataSet。
startRecord: 从其开始的从零开始的记录号。
maxRecords: 要检索的最大记录数。
srcTable: 用于表映射的源表的名称。 返回值:
已在 System.Data.DataSet 中成功添加或刷新的行数。这不包括受不返回行的语句影响的行。
在使用的时候
SqlDataAdapter 会从数据库中将所有记录取出吗?
我主要是关心这个问题
其原形是:fill(System.Data.DataSet dataSet, int startRecord, int maxRecords, string srcTable)
第一个参数:要填充的数据集
第二个参数:要查找的开始记录编号(即从第几条记录开始)
第三个参数:每页的记录个数
第四个参数:表名
例如:startRecord = (curPage - 1) * pageSize,其中curPage是当前页数、pageSize是每页的记录个数,每次刷新页面通过改变startRecord参数来达到分页的目的。
这个方法我用过
我只是想请问它的效率如何?
====================
这得看你Fill的SQL语句
http://blog.csdn.net/banmuhuangci
请看最新的那篇文章