分享一个grails与jqGrid整合的小代码

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

//服务
class JqGridService {
    
    /**
    * @params params 相关参数(jqGrid向服务器端发的参数)
    * @param queryBlock 取数据的闭包逻辑
    * @param dataFormat 取出数据后具体需要组装成json的数据
    */
    def createForJson = { params,queryBlock,dataFormat ->
        def sortIndex = params.sidx ?: 'id'
        def sortOrder  = params.sord ?: 'desc'
        def maxRows = Integer.valueOf(params.rows ?: 10)
        def currentPage = Integer.valueOf(params.page ?: 1) ?: 1
        def rowOffset = currentPage == 1 ? 0 : (currentPage - 1) * maxRows
        params.max = maxRows
        params.offset = rowOffset
        def dataRows = queryBlock.call(params)
        def totalRows = dataRows.totalCount
        def numberOfPages = Math.ceil(totalRows / maxRows)
        def results = dataRows?.collect {
            dataFormat(it)
        }
        [rows: results,currpage: currentPage,totalrecords: totalRows,totalpages: numberOfPages]
    }
}

//控制器调用示例
class MyController{

def jqGridService

       def listJSON = {
        //取数据的闭包逻辑
        def block = { params ->
            Article.createCriteria().list(max: params.max,offset: params.offset) {
            order(params.sidx,params.sord).ignoreCase()
            }
        }
        //取出数据后具体需要组装成json的数据
        def format = { row ->
            [
                    'id':row.id,'nickname':row.nickname,'realname':row.realname,'username':row.username,'type':row.type?.name,'online':row.online ? '是' : '否','dateCreated':row.dateCreated?.format('yyyy-MM-dd HH:mm:ss'),'loginTime':row.loginTime?.format('yyyy-MM-dd HH:mm:ss')
            ]
        }        
        render jqGridService.createForJson(params,block,format) as JSON
    }
}

//页面调用
<script type="text/javascript">
          $(document).ready(function(){
              $('#list').jqGrid(
              {
                jsonReader : {
                root:"rows",page: "currpage",total: "totalpages",records: "totalrecords",repeatitems: false,id: "0"
                },url: '${resource()}/admin/user/listJSON',colNames: ['ID','登录名','昵称','真实姓名','用户类型','注册时间','登录时间','是否在线'],colModel:
                  [
                  {name:'id',editable: false},{name:'username',editable: true},{name:'nickname',{name:'realname',{name:'type',{name:'dateCreated',{name:'loginTime',{name:'online',editable: true}
                  ],sortname: 'id',caption: '用户列表',height: 300,rowNum:10,autowidth: true,scrollOffset: 0,viewrecords: true,pager: '#pager',datatype: 'json'
              }
            );

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

相关文章

背景:    8月29日,凌晨4点左右,某服务告警,其中一个...
https://support.smartbear.comeadyapi/docs/soapui/steps/g...
有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能...
Scala和Java为静态语言,Groovy为动态语言Scala:函数式编程,...
出处:https://www.jianshu.com/p/ce6f8a1f66f4一、一些内部...
在运行groovy的junit方法时,报了这个错误:java.lang.Excep...