2013-04-22 4 views
1

[해결]그리드 스플리터는 중간 그리드에 extjs를 크기를 조정하지

내 UI 세 그리드를 가지고있다. 그것들을 A, B, C라고 가정하십시오.

문제는 그리드 사이에 두 개의 스플리터를 추가했기 때문입니다. 그리드 A와 C의 크기가 조정되지만 그리드 B가 고정됩니다.

-------------------------- 
      A 
    --------------------------- 
      B 
    ---------------------------- 
      C 




-------------------------------- 
      A 



--------------------------------- 
      B 
--------------------------------- 


      C 
--------------------------------- 

내가 설명하는 코드를 작성하는 방법을 잘 모르겠습니다 : P

코드 : 우리와 함께 일하는 사람들에서

layout:{ 
     type:'vbox', 
     align:'stretch', 
     pack:'start', 
     split:true, 
     collapsible:true 
    }, 
    items:[{ 
     xtype:'panel', 
     layout:'fit', 
     minHeight:200, 
     flex:0.3, 
     items:[{ 
      // add some grid or panel 
     }] 
     }, 
     { 
     xtype:'splitter', 
     }, 
     { 
     xtype:'panel', 
     layout:'fit', 
     flex:0.3, 
     minHeight:200, 
     items:[{ 
      // add some grid or panel 
     }] 
     }, 
     { 
     xtype:'splitter', 
     }, 
     { 
     xtype:'panel', 
     layout:'fit', 
     flex:0.3, 
     minHeight:200, 
      items:[{ 
      // add some grid or panel 
     }] 
     }] 
약간의 도움으로

http://jsfiddle.net/8Zesp/178/

+0

도움이되기를 바랍니다. –

+0

를 제공해야합니다

Ext.override(Ext.resizer.SplitterTracker, { // Performs the actual resizing of the previous and next components performResize: function(e, offset) { var me = this, splitter = me.getSplitter(), orient = splitter.orientation, prevCmp = me.getPrevCmp(), nextCmp = me.getNextCmp(), owner = splitter.ownerCt, flexedSiblings = owner.query('>[flex]'), len = flexedSiblings.length, i = 0, dimension, size, totalFlex = 0; // BUGFIX here: var getSizeFunc = (orient === 'vertical') ? 'getWidth' : 'getHeight'; // Convert flexes to pixel values proportional to the total pixel width of all flexes. for (; i < len; i++) { size = flexedSiblings[i][getSizeFunc](); totalFlex += size; flexedSiblings[i].flex = size; } offset = offset || me.getOffset('dragTarget'); if (orient === 'vertical') { offset = offset[0]; dimension = 'width'; } else { dimension = 'height'; offset = offset[1]; } if (prevCmp) { size = me.prevBox[dimension] + offset; if (prevCmp.flex) { prevCmp.flex = size; } else { prevCmp[dimension] = size; } } if (nextCmp) { size = me.nextBox[dimension] - offset; if (nextCmp.flex) { nextCmp.flex = size; } else { nextCmp[dimension] = size; } } owner.updateLayout(); } }); 
user2803

+0

모든 것이 잘 작동합니다. 그리드 크기가 조정됩니다. 중간 격자가 원하는 것은 무엇입니까? – Patrick

답변

2

이었다 그것을 올바르게 할 수 있습니다. 그것은 적절한에 extjs

그것은 스플리터의 코드 (SplitterTracker)의 버그를 실행하지 않는 jsfiddle에서 근무하고이를 실제에 관계없이 '() getWidth'하드 코딩 있었다 재정의 고정 할 수 있습니다 스플리터가 움직이는 방향.

나는이 사람

당신은 내가 문제를 설명하는 방법에 대한 명확하지 않다 몇 가지 코드