Posted on 2010-12-01 12:32
asdtiang 閱讀(897)
評(píng)論(0) 編輯 收藏
grails ajax分頁標(biāo)簽實(shí)現(xiàn)--不帶參數(shù)續(xù)傳的
http://www.tkk7.com/asdtiang/archive/2010/11/26/339127.html
這次有了新的需求,比如說在結(jié)果中查詢--查詢結(jié)果用的是這個(gè)分頁,那么參數(shù)不繼續(xù)傳的話,就會(huì)出錯(cuò)了
只是更改了上次的tagLib類:
代碼如下:
import org.springframework.web.servlet.support.RequestContextUtils as RCU;
import org.codehaus.groovy.grails.commons.ConfigurationHolder

class AjaxPageTagLib
{

def paginateAjax=
{attrs ->
def writer = out
//獲取其它的參數(shù)
def params1=new HashMap()
params1.putAll(params)
params1.remove("max")
params1.remove("offset")
params1.remove("controller")
params1.remove("action")
def otherParamsUrl=""

params1.each
{
otherParamsUrl=otherParamsUrl+it.toString()+"&"
}
params.offset = Math.min(params.offset ? params.offset as int : 0, 100)
params.sort=params.sort==null?"dateCreated":params.sort
params.order=params.order==null?"desc":params.order
def messageSource = grailsAttributes.getApplicationContext().getBean("messageSource")
def locale = RCU.getLocale(request)
def total = attrs.total.toInteger()
def offset = params.offset?.toInteger()
def max = params.max?.toInteger()
int pageSize=Math.round(Math.ceil(total / max))
def path=request.getContextPath()
def pageNow=offset/max+1
def selectMax=attrs.selectMax?.toInteger()

if(!selectMax)
{
selectMax=20
}
selectMax=selectMax>total?total:selectMax
////js輸出
writer<<"""
<div id="ajaxPage">
"""
/////顯示首頁和上頁
def firstText=messageSource.getMessage('paginate.first', null, messageSource.getMessage('default.paginate.first', null, 'First', locale), locale)
def prevText=messageSource.getMessage('paginate.prev', null, messageSource.getMessage('default.paginate.prev', null, 'Prev', locale), locale)
def nextText=messageSource.getMessage('paginate.next', null, messageSource.getMessage('default.paginate.next', null, 'Next', locale), locale)
def lastText=messageSource.getMessage('paginate.last', null, messageSource.getMessage('default.paginate.last', null, 'Last', locale), locale)

if(offset!=0)
{
def firstUrl="""${otherParamsUrl}offset=0&max=${params.max}"""
writer<<"""
<span id="firstShow" title="${firstText}" onclick="new Ajax.Updater('${attrs.update}',

'${path}/${params.controller}/${params.action}',
{asynchronous:true,evalScripts:true,parameters:'${firstUrl}'});
return false;" >

[$
{firstText}]
</span>
"""
int prev=offset-max
def prevUrl="""${otherParamsUrl}offset=${prev}&max=${params.max}"""
writer<<"""
<span id="preShow" title="${prevText}" onclick="new Ajax.Updater('${attrs.update}',

'${path}/${params.controller}/${params.action}',
{asynchronous:true,evalScripts:true,parameters:'${prevUrl}'});
return false;" >

[$
{prevText}]
</span>
"""
}

else
{

writer<<"""<span id="firstNoShow" title="$
{firstText}">

[$
{firstText}]
</span>
"""

writer<<"""<span id="preNoShow" title="$
{prevText}">

[$
{prevText}]
</span>
"""
}
////數(shù)據(jù)信息輸出
writer<<"""<span id="ajaxPageInfo">當(dāng)前${pageNow}/${pageSize}頁(共${total})</span>"""
//下一頁和末頁輸出,

if(offset!=max*(pageSize-1))
{
int next1=offset+max
def nextUrl="""${otherParamsUrl}offset=${next1}&max=${params.max}"""
writer<<"""
<span id="nextShow" title="${nextText}" onclick="new Ajax.Updater('${attrs.update}',

'${path}/${params.controller}/${params.action}',
{asynchronous:true,evalScripts:true,parameters:'${nextUrl}'});
return false;" >

[$
{nextText}]
</span>
"""
int last=max*(pageSize-1)
def lastUrl="""${otherParamsUrl}offset=${last}&max=${params.max}"""
writer<<"""
<span id="lastShow" title="${lastText}" onclick="new Ajax.Updater('${attrs.update}',

'${path}/${params.controller}/${params.action}',
{asynchronous:true,evalScripts:true,parameters:'${lastUrl}'});
return false;" >

[$
{lastText}]
</span>
"""
}

else
{

writer<<"""<span id="nextNoShow" title="$
{nextText}">

[$
{nextText}]
</span>
"""

writer<<"""<span id="lastNoShow" title="$
{lastText}">

[$
{lastText}]
</span>
"""
}
///到指定頁連接輸出
def selectUrl="&${otherParamsUrl}max=${params.max}"
writer<<"""
<span id="ajaxSelectText">轉(zhuǎn)到<select id="ajaxSelect" onchange="myUpdate('${attrs.update}','${path}/${params.controller}/${params.action}'
,'${selectUrl}','${max}')">
"""

for(int j=1;j<=pageSize;j++)
{

if(pageNow!=j)
{

writer<<""" <option value ="$
{j}">${j}/${pageSize}</option> """
}

else
{

writer<<""" <option value ="$
{j}" selected="selected">${j}/${pageSize}</option> """
}
}
writer<<"</select>頁</span>"
////每頁顯示幾條數(shù)據(jù)
def maxUrl="&${otherParamsUrl}offset=0"
writer<<"""
<span id="ajaxMaxText"> 每頁顯示</span><select id="ajaxMax" onchange="myUpdate2('${attrs.update}','${path}/${params.controller}/${params.action}'
,'${maxUrl}')">
"""

for(int j=1;j<=selectMax;j++)
{

if(max!=j)
{

writer<<"""<option value ="$
{j}">${j}</option>"""
}

else
{

writer<<"""<option value ="$
{j}" selected="selected">${j}</option>"""
}
}
writer<<"</select> </div>"
}
}





天蒼蒼,野茫茫,風(fēng)吹草底見牛羊