jquery easyui datagrid 分页 详解

由于项目原因,用了jquery easyui 感觉界面不错,皮肤样式少点,可是官网最近打不开了,资料比较少,给的demo没有想要的效果,今天在用datagrid 做分页显示的时候,折腾了半天,网上的资料也比较少,后自己动手,终于解决,废话不说,开始:

datagrid分页 有一个附加的分页控件,只需后台获取分页控件自动提交的两个参数rows每页显示的记录数和page;//当前第几页

然后读取相应页数的记录,和总记录数total一块返回即可 界面如下:

1、下边是datagrid的显示对话框,我直接用table把列头显示出来,感觉比用js写要易于阅读

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<table id= "list_data"  cellspacing= "0"  cellpadding= "0"
     <thead> 
         <tr> 
             <th field= "fldAppDept"  width= "100" >部门</th> 
             <th field= "fldAppNode"  width= "100" >网站</th> 
             <th field= "fldAppName"  width= "100" >名称</th> 
             <th field= "fldAppMgr"  width= "100" >管理员</th> 
             <th field= "fldAppNote"  width= "100" >注释</th> 
             <th field= "fldAppType"  width= "100" >类型</th> 
             <th field= "fldTelphone"  width= "100" >电话</th> 
             <th field= "fldAppImg"  width= "100" >职务</th> 
             <th field= "fldAppMonitor"  width= "100" >启用监测</th> 
             <th field= "fldAppLevel"  width= "100" >要重级别</th> 
         </tr> 
     </thead> 
</table> 

2、js代码,用于构建datagrid

注意 要想显示分页控件,pagination属性必须为true

返回值类型为json,其中包括:rows   ,totle  ,pageNumber  .

rwos :为每行记录内容

totle:为所有记录个数        datagrid 会自动获取totle这个参数,并运用这个参数,因此我们只要将此参数返回即可。

pageNumber:为最大页数

例子:

Map<String,Object>  mp=new HashMap<String,Object>(); 
mp.put("total",total);
mp.put("rows", beans); 
mp.put("pageNumber", "222"); 
       writePlainText(JsonUtil.map2json(mp));   //将map 转化为json,并传至前台

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//datagrid初始化 
     $( '#list_data' ).datagrid({ 
         title: '应用系统列表'
         iconCls: 'icon-edit' , //图标 
         width: 700, 
         height:  'auto'
         nowrap:  false
         striped:  true
         border:  true
         collapsible: false , //是否可折叠的 
         fit:  true , //自动大小 
         url: 'listApp.action'
         //sortName: 'code', 
         //sortOrder: 'desc', 
         remoteSort: false ,  
         idField: 'fldId'
         singleSelect: false , //是否单选 
         pagination: true , //分页控件 
         rownumbers: true , //行号 
         frozenColumns:[[ 
             {field: 'ck' ,checkbox: true
         ]], 
         toolbar: [{ 
             text:  '添加'
             iconCls:  'icon-add'
             handler:  function () { 
                 openDialog( "add_dialog" , "add" ); 
            
         },  '-' , { 
             text:  '修改'
             iconCls:  'icon-edit'
             handler:  function () { 
                 openDialog( "add_dialog" , "edit" ); 
            
         },  '-' ,{ 
             text:  '删除'
             iconCls:  'icon-remove'
             handler:  function (){ 
                 delAppInfo(); 
            
         }], 
     }); 
     //设置分页控件 
     var  p = $( '#list_data' ).datagrid( 'getPager' ); 
     $(p).pagination({ 
         pageSize: 10, //每页显示的记录条数,默认为10 
         pageList: [5,10,15], //可以设置每页记录条数的列表 
         beforePageText:  '第' , //页数文本框前显示的汉字 
         afterPageText:  '页    共 {pages} 页'
         displayMsg:  '当前显示 {from} - {to} 条记录   共 {total} 条记录'
         /*onBeforeRefresh:function(){
             $(this).pagination('loading');
             alert('before refresh');
             $(this).pagination('loaded');
         }*/ 
     }); 

3、后台我是通过struts2处理的数据 返回json串

rows 和 page 参数是 datagrid 自动传参传至后台,因此后台只需后去就ok了,这里使用的是struts框架,因此只需编写get和set方法即可

private  JSONObject result; //返回的json 
       
     private  String rows; //每页显示的记录数 
       
     private  String page; //当前第几页 
   
         private  AppServiceInter appService; 
   
     public  JSONObject getResult() { 
         return  result; 
    
     public  void  setResult(JSONObject result) { 
         this .result = result; 
    
     public  void  setAppService(AppServiceInter appService) { 
         this .appService = appService; 
    
   
         public  String getRows() { 
         return  rows; 
    
     public  void  setRows(String rows) { 
         this .rows = rows; 
    
     public  String getPage() { 
         return  page; 
    
     public  void  setPage(String page) { 
         this .page = page; 
    
         /**
      * 查询应用系统
      * @return
      */ 
     public  String listApp() { 
         System.out.println( "---------------" ); 
         //当前页 
         int  intPage = Integer.parseInt((page == null  || page == "0" ) ? "1" :page); 
         //每页显示条数 
         int  number = Integer.parseInt((rows == null  || rows == "0" ) ? "10" :rows); 
         //每页的开始记录  第一页为1  第二页为number +1  
         int  start = (intPage- 1 )*number; 
           
         List<TblApp> list = appService.findByPageApp(start,number); //每页的数据,放入list 
             Map<String, Object> jsonMap = new  HashMap<String, Object>(); //定义map 
             jsonMap.put( "total" , appService.getCountApp()); //total键 存放总记录数,必须的 
             jsonMap.put( "rows" , list); //rows键 存放每页记录 list 
             result = JSONObject.fromObject(jsonMap); //格式化result   一定要是JSONObject 
           
         //result = JSONArray.fromObject(jsonMap); 
         return  SUCCESS; 
    

4、附上struts.xml配置文件

< package  name="app" extends="json-default"> 
         < action  name="listApp" class="appAction" method="listApp"> 
             < result  type="json"> 
                 < param  name="root">result</ param
             </ result
         </ action
</ package

转自:http://www.cnblogs.com/huozhicheng/archive/2011/09/27/2193605.html#!comments
VB DataGrid分页 请看: 数据库:test2000.mdb 表:numbers 字段:Id(自动编号),anumber(数字) 因为DataGrid控件我们采用直接绑定记录集来显示数据.所以分页处理我们采用了间接的办法,定义另一个记录集objrs,将分页后的记录集付给objrs.然后绑定DataGrid ''效果还不错 , 我加了详细地注释,像pagesize, AbsolutePage的用法可参考msdn VB中新建工程,form中添加DataGrid控件,按钮cmdPrevious和cmdNext,文本框txtPage ''引用microsoft active data object 2.x object library Option Explicit Dim conn As ADODB.Connection Dim lCurrentPage As Long Private Sub cmdNext_Click() lCurrentPage = lCurrentPage + 1 Call Loadcontrol(lCurrentPage) End Sub Private Sub cmdPrevious_Click() If lCurrentPage > 1 Then lCurrentPage = lCurrentPage - 1 Call Loadcontrol(lCurrentPage) End If End Sub Private Sub Form_Load() Set conn = New ADODB.Connection conn.CursorLocation = adUseClient conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\test2000.mdb;" lCurrentPage = 1 Call Loadcontrol(lCurrentPage) End Sub Private Sub Loadcontrol(lPage As Long) Dim adoPrimaryRS As ADODB.Recordset Dim lPageCount As Long Dim nPageSize As Integer Dim lCount As Long ''每页显示的纪录 nPageSize = 10 Set adoPrimaryRS = New ADODB.Recordset adoPrimaryRS.Open "select * from numbers", conn, adOpenStatic, adLockOptimistic adoPrimaryRS.PageSize = nPageSize ''页数 lPageCount = adoPrimaryRS.PageCount If lCurrentPage > lPageCount Then lCurrentPage = lPageCount End If adoPrimaryRS.AbsolutePage = lCurrentPage ''定义另一个记录集 Dim objrs As New ADODB.Recordset ''添加字段名称 For lCount = 0 To adoPrimaryRS.Fields.Count - 1 objrs.Fields.Append adoPrimaryRS.Fields(lCount).Name, adVarChar, adoPrimaryRS.Fields(lCount).DefinedSize Next ''打开记录集 objrs.Open ''将指定记录数循环添加到objrs中 For lCount = 1 To nPageSize objrs.AddNew objrs!id = adoPrimaryRS!id objrs!anumber = adoPrimaryRS!anumber adoPrimaryRS.MoveNext Next ''绑定 Set DataGrid1.DataSource = objrs ''在文本框显示页数 txtPage = lPage & "/" & adoPrimaryRS.PageCount End Sub Private Sub Form_Unload(Cancel As Integer) If Not conn Is Nothing Then conn.Close End If Set conn = Nothing End Sub ‘文本框中输入页数,回车跳转到指定位置 Private Sub txtPage_KeyDown(KeyCode As Integer, Shift As Integer) lCurrentPage = Val(txtPage.Text) Call Loadcontrol(lCurrentPage) End Sub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值