您的位置:首页 > 大数据 > 人工智能

grails findAll paginate and sortablecolumn

2008-11-18 09:49 337 查看
if(!params.max) params.max = 20
if (!params.offset) params.offset = 0
if (!params.sort) params.sort = 'id'
if (!params.order) params.order = 'asc'

def paginateParams = [max: new Long(params.max), offset: new Long(params.offset)]
return [ testProjectList: TestProject.findAll("from TestProject as b where b.createBy.group=? order by b.id ${params.order}",[User.findByUsername(request.getRemoteUser()).group],paginateParams) ]

要使得sortablecolumn能正常排序 一定加上order by b.id ${params.order} 如使得pagnate正常分页 pagenateparams是必须的 grails里有个bug findall不能加params的参数: findAll(args,args,Params)//不能转换integer错误 而findAllBy加params参数是可以的 可以避免上述问题

对于findAllBy 则只需要传入params参数即可

if(!params.max) params.max = 20

if (!params.offset) params.offset = 0

if (!params.sort) params.sort = 'id'
if (!params.order) params.order = 'asc'
render (view:'testCaseResultResult',model:[testCaseResultList : TestCaseResult.findAllByRunidAndResult(params.id,"Pass",params)])

对于pagenate: id (optional) - The id to use in the link id的作用和g:link中id一样

<div class="paginateButtons">
<g:paginate total="${TestCaseResult.count()}" id="${params.id}"/>
</div>

对于pagnate和sortable column的参数

<div class="paginateButtons">
<g:paginate total="${TestCaseResult.count()}" id="${params.id}" params="${[moduleId:params.moduleId,author:params.author]}"/>
</div>

<g:sortableColumn property="moduleid" title="Moduleid" params="${[moduleId:params.moduleId,author:params.author]}"/>

对于条件查找 多种条件

def c = TestCaseResult.createCriteria()
def results = c {
and{
eq("runid",params.id.toInteger())
or{
eq("result","GoNextIssue")
eq("result","Failed")
}
}
order(params.sort, params.order)
}

只要熟悉了分页和查找的内在逻辑 就很容易实现分页 不比拘泥于findAllBy 参数的传入
NoResultList为任意的一个list列表

def endOffset = params.offset.toInteger()+params.max.toInteger() #取列表中的某些值 区间的确定

if(pagnateCount< endOffset) #如果到了最后一页 则最后的数值赋予endOffset
endOffset=pagnateCount

render(view:'list',model:[ testCaseList: NoResultList[params.offset.toInteger()..endOffset],'pagnateCount':pagnateCount,'NoResultId':params.NoResultId])#注意 传入的NoResultList[ ] 里面的下标是从开始到结束的值 因该是当前的offset 到 endOffset
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐