asdtiang的博客 感謝blogjava提供的博客交流平臺

          grails ajax分頁標簽實現--不帶參數續傳的
          http://www.aygfsteel.com/asdtiang/archive/2010/11/26/339127.html



          這次有了新的需求,比如說在結果中查詢--查詢結果用的是這個分頁,那么參數不繼續傳的話,就會出錯了
          只是更改了上次的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
                  
          //獲取其它的參數
                  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 : 0100)
                  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>
                              
          """
                  }

                  
          ////數據信息輸出
                  writer<<"""<span id="ajaxPageInfo">當前${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">轉到<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>"
                  
                  
          ////每頁顯示幾條數據
                  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>"
              }

              
          }








          天蒼蒼,野茫茫,風吹草底見牛羊

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          posts - 80, comments - 24, trackbacks - 0, articles - 32

          Copyright © asdtiang

          asdtiang的博客 PaidMailz
          點擊廣告網賺A(每天4個廣告,每個0.0025美元,一個搜索廣告0.03美元)
          主站蜘蛛池模板: 兴宁市| 长汀县| 邓州市| 海晏县| 砚山县| 绥中县| 冀州市| 玉山县| 班戈县| 若羌县| 招远市| 卓尼县| 柯坪县| 永吉县| 新泰市| 井研县| 柳州市| 双流县| 海南省| 喜德县| 潮州市| 雷山县| 定南县| 巢湖市| 黑龙江省| 洮南市| 台北县| 新竹市| 平罗县| 涟源市| 太湖县| 和田市| 汪清县| 富宁县| 介休市| 福建省| 隆回县| 鄂温| 乳源| 调兵山市| 泰安市|