jQuery liger ui ligerGrid 打造通用的分页排序查询表格(提供下载)

一,ligerGrid是如何工作的。

 

在没有开始做之前,需要先了解一下ligerGrid是如何工作的。简单来说,liger grid 就是提交准备好的数据到指定的目标请求数据,拿到数据以后,显示出来。

所以问题在于发送什么数据,拿到什么数据。先来看看ligerGrid的参数:

 

        url: null,                          
        pageSize: 10,                        
        sortName : null,
        sortOrder:null,      
        root : ' Rows ' ,                        // 数据源字段名
        record: ' Total ' ,                      // 数据源记录数字段名
        pageParmName : ' page ' ,                // 页索引参数名,(提交给服务器)
        pagesizeParmName: ' pagesize ' ,         // 页记录数参数名,(提交给服务器)
        sortnameParmName: ' sortname ' ,         // 页排序列名(提交给服务器)
        sortorderParmName: ' sortorder ' ,       // 页排序方向(提交给服务器)

 

发送什么数据

page、pagesize、sortname、sortorder 这几个是默认发送到服务器的参数,可用于正确返回分页、排序后的数据。  如果需要查询,可能需要配置一下parms,格式如 parms:[{name:'wherestr',value:'status="active"'}] ,这样后台就可以收到这个参数了

比如我在页面上这样配置:

pageSize:  30 ,url:  " service/BillListData.ashx?gridviewname=authors " , sortName:  ' au_id '

后台收到的数据,将会是:

拿到什么数据

Rows、Total这两个是返回数据的默认字段名,Rows是数据的json格式,Total是记录的总数,需要的数据类似这样的:

 效果如下:

 

二,存储过程

 

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

 

三,准备一个通用的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""} " ;
        }

五,提供下载

 基于存储过程的通用分页排序查询表格 下载

转载于:https://www.cnblogs.com/leoxie2011/archive/2011/05/28/2061406.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值