62,267
社区成员
发帖
与我相关
我的任务
分享
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/* QQ312430633 创建日期:2008-06-25 */
--修改了ORDER BY 需要 percent 与 ORDERBY 失效的BUG--
---注意'roder by'用一个空格间隔
Create PROCEDURE [dbo].[les_AllowPaging]
@pageindex int, ----*****页码
@PageSize int, ----*****每页显示条数
@tsql varchar(4000)----*****SQL语句
as
Declare @SqlSelect varchar(4000)
Declare @orderby varchar(4000)
Declare @AllowPagingSql varchar(4000)
---判断是否排序
if CHARINDEX('order by',@tsql) <> 0
begin
set @SqlSelect=replace(substring (@tsql,1, CHARINDEX('order by',@tsql)-1),'$','''')
set @orderby=replace(substring (@tsql, CHARINDEX('order by',@tsql),len(@tsql) ),'$','''')
set @AllowPagingSql=
'select * from (SELECT ROW_NUMBER() OVER('+@orderby+') AS AllowPagingId,* FROM ('+
@SqlSelect
+') as table1) as table2 where AllowPagingId between '
+convert(varchar(10),((@pageindex-1) * @PageSize+1))+' and '
+convert(varchar(10), @pageindex * @PageSize)
exec (@AllowPagingSql)
end
else
begin
set @SqlSelect=replace(@tsql,'$','''')
set @orderby=''
set @AllowPagingSql=
'select * from (SELECT *,ROW_NUMBER() OVER(ORDER BY orderbyID DESC) AS AllowPagingId FROM ( select *, 1 as orderbyID from ( '
+@SqlSelect
+' ) as tbs1 ) as Tabl1 ) as table2 where AllowPagingId between '
+convert(varchar(10),((@pageindex-1) * @PageSize+1))+' and '
+convert(varchar(10), @pageindex * @PageSize)
exec (@AllowPagingSql)
end
set @AllowPagingSql='select
case
when count(*)%'+convert(varchar(10),@PageSize)+'=0 then count(*)/'+convert(varchar(10),@PageSize)+'
when count(*)%'+convert(varchar(10),@PageSize)+'<>0 then count(*)/'+convert(varchar(10),@PageSize)+'+1
end as pageCount,count(*) as RowsCount from ('+@SqlSelect+') as tab1'
exec (@AllowPagingSql)
<asp:GridView ID="gv1" runat="server"></asp:GridView>
protected DataTable getDataTableDepartment()
{
System.Data.DataTable dt = new System.Data.DataTable();
System.Data.DataRow dr;
dt.Columns.Add(new System.Data.DataColumn("ID", typeof(System.Int32)));
dt.Columns.Add(new System.Data.DataColumn("Caption", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("ManagerID", typeof(System.Int32)));
dr = dt.NewRow();
dr[0] = 1;
dr[1] = "A";
dr[2] = 1;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 2;
dr[1] = "B";
dr[2] = 1;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 3;
dr[1] = "C";
dr[2] = 1;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 4;
dr[1] = "D";
dr[2] = 2;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 5;
dr[1] = "E";
dr[2] = 2;
dt.Rows.Add(dr);
return dt;
}
protected void Page_Load(object sender, EventArgs e)
{
DataView dv = getDataTableDepartment().DefaultView;
dv.RowFilter = "ManagerID=1";
gv1.DataSource = dv.Table;
gv1.DataBind();
}