|
想来学习 .net 也2个月了吧,最初遇到的一个问题就是分页程序获取当前页的数据并支持字段排序而且支持搜索时的 Where 语句 在网上搜了
很久也没找到,也在 Asp.net 的一些论坛上发过帖子也许是那些高手懒得理我吧(做菜鸟就是难)也许是我找东西的能力有问题,但我却找到了以下SQL 的
存储过程。
SET @page = (@page-1) * @pagesize + 1 EXEC sp_cursoropen @P1 output, @strSQL EXEC sp_cursorfetch @P1, 16, @page, @pagesize EXEC sp_cursorclose @P1
后来经过修改就成下面这样了(后面有个调用的例子 VB.net 版本我只会VB 不知微软何时出 masm.net 我想这辈子是没希望了)
/* 通用存储过程分页----- 江建 只读取当前页 支持分类排序 */
CREATE PROCEDURE GetPage ( @strTableName nvarchar(50), --表名 @fldName nvarchar (200), --要返回的字段 @strWhere nvarchar(200)="", --Where 语句 @fldOrderby nvarchar(200), --要排序的字段 @OrderType int=0, --排序类型升序还是降序 @page int = 1, --要获取的页码 @pageSize int = 5 --页大小 ) AS SET NOCOUNT ON DECLARE @P1 int DECLARE @strSQL nvarchar(1000) DECLARE @strOrderby nvarchar(200)
IF @OrderType != 0 SET @strOrderby = ' Order By [' + @fldOrderby +'] DESC' ELSE
SET @strOrderby = ' Order By [' + @fldOrderby +'] ASC'
IF @strWhere !='' SET @strSQL='SELECT ' + @fldName + ' FROM [' + @strTableName + '] WHERE ' + @strWhere + @strOrderby ELSE SET @strSQL='SELECT ' + @fldName + ' FROM [' + @strTableName + ']' + @strOrderby
SET @page = (@page-1) * @pagesize + 1 EXEC sp_cursoropen @P1 output, @strSQL EXEC sp_cursorfetch @P1, 16, @page, @pagesize EXEC sp_cursorclose @P1 GO
/*这个是获取记录总数----- 江建*/ CREATE PROCEDURE CountRow ( @strTableName nvarchar(50), @fldNameCount nvarchar(50), @strWhere nvarchar(200)="" ) AS DECLARE @strSQL nvarchar(1000) IF @strWhere !='' SET @strSQL='SELECT Count([' + @fldNameCount + ']) As CountRow FROM [' + @strTableName + '] WHERE ' +
@strWhere ELSE SET @strSQL='SELECT Count([' + @fldNameCount + ']) As CountRow FROM [' + @strTableName + ']' EXEC sp_executesql @strSQL GO
(1)下面是类模块 DataPager.vb '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
上一篇:在C#中使用XML指南之读取XML
下一篇:一个自定义LABEL组件的C#源代码
|