2017-03-28 21 views
0

저장소의 hasMany 요소에 설정된 열로 extjs 표를 그룹화 할 수 있는지 알고 싶습니다. 나의 예는 아무것도 재현하기에 충분하지 않다. 그러나 나는 단지 예를 찾고있다. 여기에 예나 아니오가있다. 감사!EXTJS 4.2.1 그리드 행을 그룹화하는 방법은 여러 관계가 있습니까?

도서관 도서 용 UI를 채우는 extjs 저장소를 설정했습니다. 책을 체크 아웃 할 때마다 나타내는 모델을 가리키는 hasMany 관계가 bookStore에 있습니다. 이 hasMany 모델은 Checkouts 목록을 보여주는 Book UI의 gridpanel에 바인딩됩니다.

라이브러리 구성원이 책을 체크 아웃 한 gridpanel 행을 그룹화하려고합니다 (예 : 3 명의 사용자가 두 번 체크 아웃했는데 현재 memberName과 checkoutDate가 6 행으로되어 있습니다.) 3 개의 헤더를 표시하는 memberName별로 해당 행을 그룹화하고 싶습니다. 각각 2 행 아래에 checkoutDate가 표시됩니다.

내가 더 내가 노력 구성 문제, 심지어 사용자 정의 groupFields 및 상점에서 '아이의 객체를 참조하는 다른 방법을 작동 할 수 없습니다 (예를 들어 ExtJS 6 grid group by associated models)

이 어떤 모델의 모양 약이다 제 설명을 명확히하는 데 도움이됩니다. 나는 이것이 정확히 구문 론적으로 정확하지 않을지도 모른다는 것을 안다. 그러나 나는 단지 나의 목표가 가능하고 내가 취할 수있는 접근법을 찾아 내려고하고있다.

Ext.define('Book.model.BookModel', { 
    extend : 'Ext.data.Model', 
    alias : 'model.BookModel', 
    fields : [{ 
     name: 'Title', 
     type: 'String' 
    }], 
    hasMany:[{ 
     name: 'checkouts', 
     model: 'Book.model.Checkouts' 
    }] 
}); 

Ext.define('Book.model.Checkouts', { 
    extend : 'Ext.data.Model', 
    alias : 'model.Checkouts', 
    fields: [{ 
     name: 'Name', 
     type: 'string' 
    },{ 
     name: 'checkoutDate', 
     type: 'date' 
    }], 
    associations : [{ 
     model: 'Book.store.BookStore', 
     type : 'belongsTo', 
     name: 'bookStore' 
    }] 
}); 

Ext.define('Book.store.BookStore', { 
extend: 'Ext.data.Store', 
model : 'Book.model.BookModel', 
groupField: '????', 
//etc. 
}); 

구성 나는 시도했습니다

groupField: 'Checkouts.Name', 

groupField: 'checkouts.Name', 

그리드 설정 이대로 더 :

groupers: [{ftype:'grouping'}], 
groupers: [{ 
         property: 'Checkouts.name',//and with checkouts.name 
         root: 'data', 
         groupFn: function (val) { 
         return val === val ? val : ''; 
        } 
      }] 
+0

우리가 할 수있는 피들 (Fiddle)을 가지고 있습니까? 아마도 당신이 이미 시도한 것을 가지고있을 것입니다. – incutonez

+0

나는 아래에서 질문에서 시도한 것을 나열했습니다. 그러나 해결책 이라기보다는 이것이 가능할지를 알고 싶습니다. – Sturzl

+0

그게 ... 체크 아웃은 기술적으로 상점 맞지? 그래서'checkouts.name'을하는 것은 실제로 아무 의미도 없습니다 ... 당신은 이름 속성을 얻기 위해 단 하나의'Checkouts' 모델을 가져야합니다. 기본적으로 그리드의 저장소는'체크 아웃 '이어야하고, 그루퍼의 속성은'name'이어야합니다. – incutonez

답변