2012-07-16 22 views
6

Chcę dodać trochę stronicowania do mojej aplikacji Grails. Mam działania liście, a w nim zrobiłem to:Paginacja w Grails

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) 
    } 

w GSP to pisałem:

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

wszystko jest ok, mają 5 obiektów w moim db i widzę tylko 3 kiedy otwierasz stronę z gsp w przeglądarce, ale kiedy klikam Dalej, aby otworzyć inny obiekt 2, widzę te same 3. co jest nie tak i co muszę zrobić?

Odpowiedz

8

Trzeba zdać przesunięcie do rozmowy na list:

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

dziękuję, działa. ale czy mogę użyć niektórych stylów CSS do tagu g: paginate i jak? –

+1

@Jack: tak, zobacz źródło, aby sprawdzić klasy, które grails stawia na html, i użyj tych klas dla selektorów. (albo to albo hack na main.css) –

1

1) Jeśli używasz Kryteria zapytania następnie:

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) Jeśli używasz zapytanie Gorm następnie:

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