2012-11-17 7 views
4

BorderContainer 내에 "liveSplitters"가 설정된 (Dojo 1.8 사용) dgrid가 있습니다. dgrid는 멋지게 나옵니다. 그러나 왼쪽 열과 "leading"열 (dgrid가 있음) 사이에서 스플리터를 이동하면 dgrid의 크기가 제대로 조정되지 않습니다. 그러나 창 크기를 조정하면 dgrid가 적절한 크기로 다시 스냅됩니다 (즉, BorderContainer의 "leading"창 100 % 채우기).Dgrid BorderContainer 내에서 크기 조정

CSS에서 dgrid를 100 % 너비로 설정했습니다. 스플리터가 움직 인 후에 크기를 새로 고치려면 dgrid에 알려야 할 필요가 있습니까? http://jsfiddle.net/phusick/VjJBT/

당신이 찾고있는 CSS 규칙은 다음과 같습니다 :이 예에서

답변

6

봐 나는 또 다른 dgrid 관련 질문에 대답 쓴

#grid { 
    position: absolute; 
    top: 0; 
    bottom: 0; 
    left: 0; 
    right: 0; 
    height: auto; 
} 

편집 :가 나는의 문제가되었을 수 있습니다 생각 dgrid 버전이므로 내 dgrid을 최신 버전 0.3.3으로 업데이트하고 자신의 문제에 대한 테스트를 만들었습니다 : http://jsfiddle.net/phusick/5mHTS/.

음, 버전 문제가 아니며 BorderContainer 크기 조정시 0.3.1 및 0.3.3이 잘 작동하지만 Chrome 및 Firefox에서만 작동합니다. 나는 IE9와 오페라 12.10에 문제를 재현 :

enter image description here

그리드는 BorderContainer 크기를 조정하면 IE9/오페라에서 발생하지 않는, 제대로 크기를 조정 grid.resize()를 호출 할 필요가 있지만, 창 크기를 조정할 때 항상 발생 . 크기를 조정할 때 레이아웃 구성 요소, BorderContainerContentPane처럼, 모든 는 Dijit 어린이 resize()를 호출하기 때문에

DijitRegistry

는 문제를 해결합니다.

그래서 중 하나를 서브 클래스 DijitRegistry 또는 dojo/aspect 그리드의 부모 ContentPaneresize를 수신하고 grid::resize()를 호출 :

aspect.after(contentPane, "resize", function() { 
    grid.resize(); 
}); 
+0

팁 주셔서 감사합니다. @phusick. 나는 덧붙였다. 그러나 문제는 남아있는 것처럼 보인다. JSFiddle 샘플의 코드에 대한 Chrome의 관리자보기를 보면 'dgrid-header'클래스 행의 너비가 설정되지 않은 것을 알 수 있습니다. 그러나, 내 코드에서 Dojo는'div = '태그에'style = "width : XXXpx;"'를 추가하는 것으로 보인다 (그것은 나에 의해 하드 코드되지 않았다). 창 크기가 조정되면이 고정 너비가 업데이트되지만 분할자를 이동하면 고정 너비가 업데이트되지 않습니다. 고정 폭을 설정하는 이유는 무엇입니까? –

+0

사실, 내가 본 것처럼, Dijit (또는 dojo.parser?)는 페이지 전체에 이러한 고정 된 스타일을 추가하고 있습니다. 그리고 그들은 항상 제대로 크기를 조정하지 않습니다. 설정할 필요가있는 일반적인 설정이 있습니까? CSS에서'.dgrid-header-row'에'! important'를 사용하면, 고정 너비의 인라인 스타일을 오버라이드 할 수 있습니다. 그러나 이것들은 해킹과 같은 느낌입니다. –

+0

나 자신에게 답장을 계속하기 위해, DijitRegistry에서 dgrid를 혼합하면 더 잘 작동하는 것 같습니다. (예를 들어서 예제가 섞이지 않고 잘 작동하는 이유가 확실하지 않습니까?). 그러나 dgrid가 렌더링되고 이유를 파악할 수 없으면 내 제목 ContentPanel이 페이지 너비에 맞게 동적으로 크기가 조정되지 않습니다. 어떤 제안? –

2

을 @ phusick의 대답에 코멘트에서 언급 한 바와 같이, Dgrid 내가 DijitRegistry 믹스 인을 사용하여 제대로 경우 크기를 조정합니다. 다른 크기 조정 문제도 있었지만 CSS에서 요소의 상대 너비를 설정해야했습니다 (예 : 100 %). ContentPanel에서 필요하지 않은 크기를 제거하면 모든 요소의 크기가 조정됩니다. CSS는 Dojo 1.5에서 이월되었으며, CSS에서 설정된 크기의 ContentPanel과 동일한 방식으로 반응하지 않았습니다.

+1

문제점을 수정 한 코드를 게시 할 수 있습니까? – Kate

+0

"DijitRegistry 믹스 인을 사용하는 경우"보다 더 정교하게 작성하면 좋을 것입니다. Simon이 제안한 것처럼 코드 샘플이 도움이 될 것입니다. – Manachi