其实ObjectDataSource就支持存储过程分页。如果不涉及Sort,大概的步骤是: 1、写一个存储过程,如果是sql Server 05/08,那么 create proc 存储过程名 ( @startRowIndex int, @maximumRows int, @sortExpression nvarchar(50) ) as IF LEN(@sortExpression) = 0 SET @sortExpression = '字段名 DESC'DECLARE @sql nvarchar(4000)SET @sql = 'select 字段列表 from (select 字段列表, ROW_NUMBER() OVER (ORDER BY ' + @sortExpression + ') AS RowRank FROM 表或视图名) as 随便起一个名 WHERE RowRank > ' + CONVERT(nvarchar(10),@startRowIndex) + ' AND RowRank <= (' + CONVERT(nvarchar(10), @startRowIndex) + '+' CONVERT(nvarchar(10),@maximumRows) + ')'EXEC sp_executesql @sql存储过程中的@startRowIndex, @maximumRows, @sortExpression,这几个变量名最好不要变。2、然后给项目加一个数据集,Select方法选择这个存储过程。 3、在aspx上拖一个GridView,指定数据源为ObjectDataSource,Select方法选择XXDataAdapter.某某某。 ObjectDataSource的EnablePaging设为true,把<SelectParameters>通通删掉,因为startRowIndex,maximumRows会自动从GridView传到ObjectDataSource, ObjectDataSource的startRowIndexParameterName, maximumRowsParameterName保留原样,sortExpressionParameterName设为sortExpression.... 好像差不多了。不过还有一个之前就要做的,就是在强类型数据集里加一个返回数据总数的东东,sql写成select count(*) from 表名。 ObjectDataSource的SelectCountMethod对应这个就行了。大概步骤就这些。
存储过程分页 没怎么看懂 ~~~~(>_<)~~~~ !
用分页存储过程 在用上linkbutton控件 用url来传值
可以通过存储过程或者直接是 select top n 这样的形式实现 如果是用datagrid 或gridview这样控件分页的话网络上有很多。 可以到http://dotnet.aspx.cc/上面看看。
分页的存储过程 create proc proc_page @pagesize int, @pageindex int,当前页 @typeid int as declare @sql varchar(255) set @sql='select top '+ str(@pagesize) + 'd.id,d.name,d.money,t.name,u.name,d.data ' + ' from Details as d,type as t,userinfo as u' + ' where typeid='+ str(@typeid) +' and d.typeid=t.id and d.userid=u.id' + ' and d.id not in (select top' +str((@pageindex-1) * @pagesize) +' id from Details where typeid=' +str(@typeid)+ ')' exec(@sql) GO
1、写一个存储过程,如果是sql Server 05/08,那么
create proc 存储过程名
(
@startRowIndex int,
@maximumRows int,
@sortExpression nvarchar(50)
)
as
IF LEN(@sortExpression) = 0
SET @sortExpression = '字段名 DESC'DECLARE @sql nvarchar(4000)SET @sql = 'select 字段列表 from (select 字段列表, ROW_NUMBER() OVER (ORDER BY ' + @sortExpression + ') AS RowRank FROM 表或视图名) as 随便起一个名 WHERE RowRank > ' + CONVERT(nvarchar(10),@startRowIndex) + ' AND RowRank <= (' + CONVERT(nvarchar(10), @startRowIndex) + '+' CONVERT(nvarchar(10),@maximumRows) + ')'EXEC sp_executesql @sql存储过程中的@startRowIndex, @maximumRows, @sortExpression,这几个变量名最好不要变。2、然后给项目加一个数据集,Select方法选择这个存储过程。
3、在aspx上拖一个GridView,指定数据源为ObjectDataSource,Select方法选择XXDataAdapter.某某某。
ObjectDataSource的EnablePaging设为true,把<SelectParameters>通通删掉,因为startRowIndex,maximumRows会自动从GridView传到ObjectDataSource, ObjectDataSource的startRowIndexParameterName, maximumRowsParameterName保留原样,sortExpressionParameterName设为sortExpression....
好像差不多了。不过还有一个之前就要做的,就是在强类型数据集里加一个返回数据总数的东东,sql写成select count(*) from 表名。
ObjectDataSource的SelectCountMethod对应这个就行了。大概步骤就这些。
如果是用datagrid 或gridview这样控件分页的话网络上有很多。
可以到http://dotnet.aspx.cc/上面看看。
create proc proc_page
@pagesize int,
@pageindex int,当前页
@typeid int
as
declare @sql varchar(255)
set @sql='select top '+ str(@pagesize) + 'd.id,d.name,d.money,t.name,u.name,d.data '
+ ' from Details as d,type as t,userinfo as u'
+ ' where typeid='+ str(@typeid) +' and d.typeid=t.id and d.userid=u.id'
+ ' and d.id not in (select top' +str((@pageindex-1) * @pagesize) +' id from Details where typeid=' +str(@typeid)+ ')'
exec(@sql)
GO