2012-03-06 4 views
1

화면에서 페이지 매김을하기 위해 Grails 2.0과 함께 ExtJS 3.3.1을 사용하고 있지만 예상대로 작동하지 않습니다. pagingToolbar가 Grails extJS grid paging
JS 페이지Grails ExtJS 페이지 매김

paramNames: {start:'offset',limit:'max',sort:'sort',dir:'order'}, 
baseParams: {offset:0,max:10}, 

을 :

this.gridBBar = new Ext.PagingToolbar({ 
      pageSize : 10, 
      store : this.gridStore, 
      displayInfo : true, 
      displayMsg : 'Hiển thị {0} - {1} mục tìm được của {2} kết quả', 
      emptyMsg : 'Không tìm thấy dữ liệu', 
     }); 

컨트롤러 :

def result = Floor.createCriteria().list(
    max:params.int('max')?:100, 
    offset:params.int('offset')?:0 
) 
render ([count:result.totalCount,data:result] as JSON) 

하지만 호출 버튼 (NEXT)이 때문에 중지 된 난 선단 여기 등록한 뒤에 저장소에는 방금 검색 한 10 개 항목 만 포함되었습니다.
는 내가 10 오프셋 변경 :

paramNames: {start:'offset',limit:'max',sort:'sort',dir:'order'}, 
baseParams: {offset:10,max:10}, 

매김이 잘 작동되고, 하나 개 이상한 것은 제외 : 제 1 회 클릭, 20 월 30 일 레코드에 대한 그리드는 항상 다음 10 개 결과를 표시합니다 (10 - 20 기록 2), 현재 첫 10 결과가 아닙니다. ExtJs와 Grails에서 결합 된 페이지 매김의 올바른 사용법은 무엇인지 모르겠습니다. 이 문제에 경험이 있다면, 나에게 몇 가지 정보를 나눠 주시겠습니까?
정말 고마워요.

+0

json은 어떤 모습입니까? http://shitmores.blogspot.com/2007/04/grails-ext-grid-mini-tutorial.html – chrislovecnm

+0

반환 된 JSON은 { "count": 10, "items": [ { "id": 1, "name": "AA"}, { "id": 2, "name": "B"}}}. 반환 목록에 getTotalCount() 메서드 또는 totalCount 속성이 없기 때문에 render ([count : result.totalCount, data : result] JSON) 문이 올바르지 않습니다. –

답변

0

오, 얼마나 운이 좋은가요? 나는 그것을있어! 이 두 기사를 바탕으로
은 :
1. http://grails.1312388.n4.nabble.com/Find-Count-for-pagination-And-Objects-for-Criteria-td1368528.html

2 http://blog.jeffshurts.com/2010/04/grails-pagination-and-criteriabuilder/
나는 이것에 대한 설명을 발견했다. JSON에서 반환 된 "count"속성은 result.size()에서 가져 오므로 항상 그리드 저장소의 PagingToolbar의 pageSize와 같으므로 저장소가이를 인식하므로 검색 할 결과가 더 이상 없으므로 탐색 버튼을 비활성화하십시오.
여기서 키는 쿼리의 실제 총 결과를 반환하는 것입니다 (페이지 매김 제약 조건을 첨부하지 않음). 통상, createCriteria(). list {}는 ArraysList를 돌려줍니다. 그러나 아래 목록에 페이징 PARAMS을 전달하여 :

DomainClass.createCriteria().list(max : x, offset : y) { 
// not pass max : x, offset : y to here, inside the body 
} 

Grails의이 (링크 2 참조) 암시 적 PagedResultList로 결과를 반환합니다 (링크 1 참조), 그리고 그것은 우리에게 getTotalCount을 제공한다(). Grails에 대한 공식 문서는 없다. 그리고 내 문제가 해결되었습니다.