清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
//服务
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', editable: true},
{name:'realname', editable: true},
{name:'type', editable: true},
{name:'dateCreated', editable: true},
{name:'loginTime', editable: true},
{name:'online', editable: true}
],
sortname: 'id',
caption: '用户列表',
height: 300,
rowNum:10,
autowidth: true,
scrollOffset: 0,
viewrecords: true,
pager: '#pager',
datatype: 'json'
}
);