sql server 2005 存儲分頁

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""}";
        }

發佈了26 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章