2012-07-16 3 views
6

私はgrailsアプリにページングのものを追加したいと思います。私は、リストのアクションを持っており、それには私がこれをしなかった:Grailのページネーション

if(!params.max){ 
params.max = 3 
} 
    def query = Profile.where { 
     userType == "F" 
    } 
    def freelancers = query.list(sort:"firstName", max:params.max) 
    if(freelancers) { 
     def freelancersCount = query.count() 
     return[freelancer:freelancers, fCount:freelancersCount] 
    } else { 
     response.sendError(404) 
    } 
私はこれが書いたGSPに

<div id="paginate"> 
    <g:paginate controller="freelancers" action="list" total="${fCount}"/> 
</div> 

すべてが大丈夫です、私のデシベルで5つのオブジェクトを持っていると私はわずか3を見ることができますブラウザーでgspページを開くと、他の2オブジェクトを開くために[次へ]をクリックすると、同じ3つのオブジェクトが表示されます。何が間違っていて、私は何をしなければならないのですか?

答えて

8

あなたはlistにお電話へのオフセットを渡す必要があります:あなたはその後、基準クエリを使用している場合)

def freelancers = query.list(sort:"firstName", offset:params.offset, 
max:params.max) 
+1

ありがとうございます。 g:paginateタグにCSSスタイルを使用することはできますか? –

+1

@Jack:はい、ソースを見て、grailsがHTMLに置くクラスをチェックアウトし、それらのクラスをセレクタに使用します。 (どちらか、またはmain.cssのハック) –

1

1:

params.max = Math.min(max ?: 10, 100) 
Integer offset = params.offset as Integer ?: 0 
List userInstanceList = User.createCriteria().list(max:params.max,offset:offset) { 
      or { 
       ilike('name', "%${name}%") 
       ilike('email', "%${email}%") 
      } 
      order('dateCreated', 'desc') 
     } 

2)あなたは、GORMのクエリを使用している場合:

params.max = Math.min(max ?: 10, 100) 
Integer offset = params.offset as Integer ?: 0 
List<User> userList=User.list(max:params.max,offset:offset)