您的位置:首页 > 数据库

sql server 2005 存储分页

2012-05-31 15:42 246 查看
CREATE  PROCEDURE [dbo].[P_GridViewPager] 

(   
@recordTotal INT OUTPUT,  --输出记录总数   
@viewName VARCHAR(800), --表名   
@fieldName VARCHAR(800) = '*',        --查询字段  
@keyName VARCHAR(200) = 'Id',            --索引字段 
@pageSize INT = 20,                    --每页记录数  
@pageNo INT =1,                    --当前页   
@orderString VARCHAR(200),        --排序条件   
@whereString VARCHAR(800) = '1=1'        --WHERE条件

    )AS

   BEGIN  
DECLARE @beginRow INT   
DECLARE @endRow INT    
DECLARE @tempLimit VARCHAR(200)   
DECLARE @tempCount NVARCHAR(1000) 
DECLARE @tempMain VARCHAR(1000)   
 SET @beginRow = (@pageNo - 1) * @pageSize    + 1   
 SET @endRow = @pageNo * @pageSize     
 SET @tempLimit = 'rows BETWEEN ' + CAST(@beginRow AS VARCHAR) +' AND '
+CAST(@endRow AS VARCHAR)          --输出参数为总记录数   

   SET @tempCount = 'SELECT @recordTotal = COUNT(*) FROM (SELECT '+@keyName+' FROM '+

              @viewName+' WHERE '+@whereString+') AS my_temp'    

 EXECUTE sp_executesql @tempCount,N'@recordTotal INT OUTPUT',

     @recordTotal OUTPUT   --主查询返回结果集   

  SET @tempMain = 'SELECT * FROM (SELECT ROW_NUMBER() OVER ('+@orderString+') AS rows ,'
+@fieldName+' FROM '+@viewName+' WHERE '+@whereString+') AS main_temp WHERE '+@tempLimit          --PRINT @tempMain    

 EXECUTE (@tempMain)

 END 
GO

//exec P_GridViewPager  0,'Rs_Cell_Orm','CellCN','CellCN',20,1,'order by CellCN','1=1'

ashx 一般处理程序

<%@ WebHandler Language="C#" Class="BillListData" %>

using System;

using System.Web; 

using ligerUI.Utility.Common;

using ligerUI.Utility.LigerGrid;

public class BillListData : IHttpHandler {

    

    public void ProcessRequest (HttpContext context) {

        context.Response.ContentType = "text/plain";

        try

        {

            TryGetGridViewData();

        }

        catch (Exception err)

        {

            context.Response.Write("null");

        }

        context.Response.End();

    }

    public void TryGetGridViewData()

    {

        System.Web.HttpContext context = System.Web.HttpContext.Current;

        GridViewPager pager = new GridViewPager();

        string datajson = pager.GetDataJSON();

        context.Response.Write(datajson); 

    }

    public bool IsReusable {

        get {

            return false;

        }

    }

}

 实现处理方法(接收分页排序信息,并返回正确的数据)

public DataTable GetGridView(string gridViewName, string fieldName, string gridKeyName, int pageNo, int pageSize, string orderStr, string whereStr, ref int recordTotal)

        { 

            string sqlCommad = "P_GridViewPager"; 

            SqlParameter[] parms = new SqlParameter[]{

                new SqlParameter("viewName",SqlDbType.VarChar,50),

                new SqlParameter("fieldName",SqlDbType.VarChar,50),

                new SqlParameter("keyName",SqlDbType.VarChar,50),

                new SqlParameter("pageNo",SqlDbType.Int),

                new SqlParameter("pageSize",SqlDbType.Int),

                new SqlParameter("orderString",SqlDbType.VarChar,50),

                new SqlParameter("whereString",SqlDbType.VarChar,50),

                new SqlParameter("recordTotal",SqlDbType.VarChar,50)

            };

            parms[0].Value = gridViewName;

            parms[1].Value = fieldName;

            parms[2].Value = gridKeyName;

            parms[3].Value = pageNo;

            parms[4].Value = pageSize;

            parms[5].Value = orderStr;

            parms[6].Value = whereStr;

            parms[7].Direction = ParameterDirection.Output; 

            DataTable dt = SqlHelper.ExecuteDataset(DataBaseHelper.connectionstring, CommandType.StoredProcedure, sqlCommad, parms).Tables[0];

            recordTotal = CommonHelper.ObjToInt(parms[7].Value);

            return dt;

        }
 

public string GetDataJSON()

        {

            System.Web.HttpContext ctx = System.Web.HttpContext.Current;

            int pageno = CommonHelper.ObjToInt(ctx.Request.Params["page"]);

            int pagesize = CommonHelper.ObjToInt(ctx.Request.Params["pagesize"]);

            string sortname = CommonHelper.ObjToStr(ctx.Request.Params["sortname"]);

            string sortorder = CommonHelper.ObjToStr(ctx.Request.Params["sortorder"]);

            string gridviewname = CommonHelper.ObjToStr(ctx.Request.Params["gridviewname"]);

            string gridsearch = CommonHelper.ObjToStr(ctx.Request.Params["gridsearch"]);

            if (string.IsNullOrEmpty(gridviewname))

                throw new ArgumentNullException("Grid视图名[gridsearch]不能为空"); 

            if (pageno == 0 || pagesize == 0)

            {

                if (string.IsNullOrEmpty(sortorder) && string.IsNullOrEmpty(gridsearch))

                {

                    return GetDataJSON(gridviewname);

                }

                if(string.IsNullOrEmpty(sortorder))

                    return GetDataJSON(gridviewname, gridsearch);

                if (string.IsNullOrEmpty(gridsearch))

                    return GetDataJSONUseSQL(string.Format("select * from {0} order by {1} {2}", gridviewname, sortname, sortorder.ToLower() == "asc" ? "asc" : "desc"));

                return GetDataJSON(gridviewname, gridsearch, string.Format("order by {0} {1}", sortname, sortorder));

            }

            if (string.IsNullOrEmpty(gridsearch) && string.IsNullOrEmpty(sortname))

            {

                return GetDataJSON(gridviewname, pageno, pagesize);

            }

            if (string.IsNullOrEmpty(gridsearch) && !string.IsNullOrEmpty(sortname))

            {

                return GetDataJSON(gridviewname, pageno, pagesize, sortname, sortorder);

            }

            if (!string.IsNullOrEmpty(gridsearch) && string.IsNullOrEmpty(sortname))

            {

                return GetDataJSON(gridviewname, pageno, pagesize, gridsearch);

            }

            if (!string.IsNullOrEmpty(gridsearch) && !string.IsNullOrEmpty(sortname))

            {

                return GetDataJSON(gridviewname, pageno, pagesize, sortname, sortorder, gridsearch);

            }

            return @"{""Rows"":[],""Total"":""0""}";

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息