2012-04-12 3 views
0

단일 열에 체크 박스와 숫자 필드 2 개를 배치하는 방법이 있습니까?ExtJs : 표 셀의 다중 폼 객체

 
+-----------------------+-----------------------+ 
|  Column 1  |  Column 2  | 
+-----------------------+-----------------------+ 
|      | CB  NF  NF | 
+-----------------------+-----------------------+ 
|      | CB  NF  NF | 
+-----------------------+-----------------------+ 
|      | CB  NF  NF | 
+-----------------------------------------------+ 

답변

3

같은 뭔가는 "표준"방법은 다음 renderTo 설정과 그 div의에 구성 요소를 렌더링 ID를 가진 div에 포함되도록 행/열 템플릿을 편집 할 수있는 기능을 사용하는 것입니다. 그러나 행 대신 열로 작업하기 때문에 더 쉽게 접근 할 수 있습니다. 당신의 열 설정에서

는 다음과 같이 정의 렌더러를 사용 : 그래서 지금이 열의 각 셀은 고유 ID와 세 개의 div가있다
// May not be exact, I just came up with this on the spot 
renderer: function(value, metaData, record, rowIdx, colIdx, store, view) { 
    return [ 
     "<div id='combobox_", rowIdx, "'></div>", 
     "<div id='numberfield_1_", rowIdx, "'></div>", 
     "<div id='numberfield_2_", rowIdx, "'></div>" 
    ].join(""); 
} 

가 (당신이 어떤 다른 방법 "rowIdx"를 교체해야합니다 identification, record.id와 같은). 그런 다음 구성 요소를 만들고 렌더링 된 상태로 유지하는 것은 사용자의 몫입니다.

그리드보기의 refresh 메서드는 정렬, 필터링, 숨기기 등을 포함하여 그리드가 업데이트 될 때마다 호출됩니다. 따라서 afterrefresh 이벤트 나 비슷한 것을보고 구성 요소를 다시 렌더링해야합니다. 필요에 따라. 렌더링 된 구성 요소를 재 렌더링하기 위해 myComponent.rendered = false; myComponent.render();을 사용하면 제대로 작동합니다.

아마도이 프로세스의 상당 부분을 관리하는 사람이 작성한 플러그인이 있지만 기본 개념입니다. 그것은 예쁘지 않지만 작동합니다.

+0

감사합니다. Eric. 이것은 많은 도움이됩니다! –

+0

3 개가 아닌 하나의 div를 렌더링하고, 세 개의 구성 요소를 담는 커스텀'Container' 클래스를 생성 할 수있게되었습니다. 더 빠를 수도 있고 유지하기가 더 쉬울 수도 있습니다. – Eric