2012-12-07 3 views
0

tabpanel 안에 'collapsible'= true 인 패널이 있습니다.Sencha 패널이 접히지 않습니다. correclty

확장 아이콘을 클릭해도 아무런 변화가 없습니다. 탭을 변경 한 다음 이전 이벤트로 돌아갈 때만 확장 이벤트가 실행되고 패널이 올바르게 확장됩니다. 붕괴를 시도 할 때도 이상한 행동이 발생합니다.

탭 패널과 패널을 모두 동적으로 작성합니다.

내가 탭 패널을 구축하는 방법입니다

HnBSenchaUIGeneratorClass.prototype.GenTabPanel = function (modelConfigData, targetId) { var hnb = this; 


var _layout = "auto"; 
if (modelConfigData.Layout) { 
    _layout = (Ext.decode(modelConfigData.Layout, true) == null) ? modelConfigData.Layout : Ext.decode(modelConfigData.Layout, true); 
} else { 
    _layout = "auto"; 
} 


var tabPanel = new Ext.create('Ext.tab.Panel', { 
    title: modelConfigData.WindowTitle || modelConfigData.Title, 
    layout: _layout, 
    closable: false, 
    autoScroll: true, 
    activeTab: modelConfigData.ActiveTab || 0, 
    tabPosition: modelConfigData.TabPosition || 'top', 
    listeners: { 
     beforetabchange: { 
      fn: function (tabPanel, newCard, oldCard, eOpts) { 
       //TODO: validar se isto não invalida ou interfere algum outro processo ou validação. 
       newCard.suspendLayout = true; 
      } 
     } 
    } 
}); 


if (modelConfigData.ObjId != undefined) tabPanel["objId"] = modelConfigData.ObjId; 


if (modelConfigData.BodyStyle != undefined) tabPanel["bodyStyle"] = modelConfigData.BodyStyle; 
if (modelConfigData.Closable != undefined) tabPanel["closable"] = modelConfigData.Closable; 
if (modelConfigData.Flex != undefined) tabPanel["flex"] = modelConfigData.Flex; 


if (modelConfigData.Border != undefined) tabPanel["border"] = modelConfigData.Border; 
if (modelConfigData.Style != undefined) tabPanel["style"] = modelConfigData.Style; 
if (modelConfigData.Height != undefined) tabPanel["height"] = modelConfigData.Height; 
if (modelConfigData.Width != undefined) tabPanel["width"] = modelConfigData.Width; 
if (modelConfigData.Defaults != undefined) tabPanel["defaults"] = modelConfigData.Defaults; 
if (modelConfigData.Margin != undefined) tabPanel["margin"] = modelConfigData.Margin; 
if (modelConfigData.Padding != undefined) tabPanel["padding"] = modelConfigData.Padding; 
if (modelConfigData.Property != undefined) tabPanel["dataField"] = modelConfigData.Property; 
if (modelConfigData.Anchor != undefined) tabPanel["anchor"] = modelConfigData.Anchor; 
if (modelConfigData.Rowspan != undefined) tabPanel["rowspan"] = modelConfigData.Rowspan; 
if (modelConfigData.Colspan != undefined) tabPanel["colspan"] = modelConfigData.Colspan; 
if (modelConfigData.Disabled != undefined) tabPanel["disabled"] = modelConfigData.Disabled; 


var obj; 
Ext.Array.each(modelConfigData.Items, function() { 
    if (this.DontRender === undefined || (this.DontRender != true && this.DontRender.toString().toUpperCase() != "TRUE")) { 
     switch (this.Type) { 
      case "panel": 
       obj = hnb.GenPanel(this, targetId); 
       break; 
      case "form": 
       obj = hnb.GenForm(this, targetId); 
       break; 
      case "list": 
       obj = hnb.GenGrid(this, targetId); 
       break; 
      case "CommandExecution": 
       obj = CreateObjectByCommandExecution(this, targetId); 
       break; 
      default: 
       break; 
     } 
     if (obj) { 
      if (this.ObjId != undefined) 
       obj["objId"] = this.ObjId; 


      var SelfDisabled = false; 
      if (this.SelfDisabled != undefined) { 
       if (this.SelfDisabled == true) { 
        SelfDisabled = true; 
       } 
      } 
      obj.SelfDisabled = SelfDisabled; 


      if (this.Disabled != undefined) 
       obj.disabled = (this.Disabled.toString().toUpperCase() === "TRUE"); 


      tabPanel.add(obj); 
     } 
    } 
}); 
return tabPanel; 

}

을 그리고 이것은 내가 패널을 만드는 방법은 다음과 같습니다

HnBSenchaUIGeneratorClass.prototype.GenPanel = function (modelConfigData, targetId) { var hnb = this; 


var _layout = "auto"; 
if (modelConfigData.Layout) { 
    _layout = (Ext.decode(modelConfigData.Layout, true) == null) ? modelConfigData.Layout : Ext.decode(modelConfigData.Layout, true); 
} else { 
    _layout = "auto"; 
} 


var panel = new Ext.create('Ext.panel.Panel', { 
    itemId: modelConfigData.ItemId, 
    title: modelConfigData.WindowTitle || modelConfigData.Title, 
    layout: _layout, 
    closable: false, 
    controlUrl: modelConfigData.ServiceURL 
    //autoScroll: true 
    //,border: modelConfigData.Border, 
    //flex: modelConfigData.Flex 
    //, bodyStyle: modelConfigData.BodyStyle //'background-color:green !important;' 
}); 


if (modelConfigData.ObjId != undefined) { 
    panel["objId"] = modelConfigData.ObjId; 
    panel["itemId"] = modelConfigData.ObjId; 
} 


if (modelConfigData.Flex != undefined) panel["flex"] = modelConfigData.Flex; 
if (modelConfigData.BodyStyle != undefined) panel["bodyStyle"] = modelConfigData.BodyStyle; 
if (modelConfigData.Border != undefined) panel["border"] = modelConfigData.Border; 
if (modelConfigData.Style != undefined) panel["style"] = modelConfigData.Style; 
if (modelConfigData.Height != undefined) panel["height"] = modelConfigData.Height; 
if (modelConfigData.Width != undefined) panel["width"] = modelConfigData.Width; 
if (modelConfigData.Defaults != undefined) panel["defaults"] = modelConfigData.Defaults; 


if (modelConfigData.Collapsible != undefined) panel["collapsible"] = modelConfigData.Collapsible; 
if (modelConfigData.Collapsed != undefined) panel["collapsed"] = modelConfigData.Collapsed; 
if (modelConfigData.Region != undefined) panel["region"] = modelConfigData.Region; 
if (modelConfigData.Cmargins != undefined) panel["cmargins"] = modelConfigData.Cmargins; 
if (modelConfigData.MinSize != undefined) panel["minSize"] = modelConfigData.MinSize; 
if (modelConfigData.MaxSize != undefined) panel["maxSize"] = modelConfigData.MaxSize; 




if (modelConfigData.Margin != undefined) panel["margin"] = modelConfigData.Margin; 
if (modelConfigData.Padding != undefined) panel["padding"] = modelConfigData.Padding; 
if (modelConfigData.Property != undefined) panel["dataField"] = modelConfigData.Property; 
if (modelConfigData.Anchor != undefined) panel["anchor"] = modelConfigData.Anchor; 
if (modelConfigData.Rowspan != undefined) panel["rowspan"] = modelConfigData.Rowspan; 
if (modelConfigData.Colspan != undefined) panel["colspan"] = modelConfigData.Colspan; 
if (modelConfigData.Disabled != undefined) panel["disabled"] = (modelConfigData.Disabled.toString().toUpperCase() === "TRUE"); 


addEvent(modelConfigData, panel); 


var modelFields = []; 
var panelFields = []; 
Ext.Array.each(modelConfigData.Items, function() { 
    var aux; 
    if (this.DontRender === undefined || (this.DontRender != true && this.DontRender.toString().toUpperCase() != "TRUE")) { 
     if (this.Type == "form") { 
      aux = hnb.GenForm(this); 
     } 
     else { 
      aux = hnb.CreateSenchaUIObject(this, panel, modelFields); 
     } 
    } 


    if (aux) { 
     panelFields.push(aux); 
    } 
}); 
panel.add(panelFields); 


return panel; 

}

이유에 어떤 아이디어를 이 일이 일어나고있는거야 ??

저는 Sencha 4.1.2a를 사용하고 있습니다.

답변

0

두 이벤트를 막고있는 것을 발견했습니다. 내가 없을 때 다른 화면에 필요한 newCard.suspendLayout = true;

그래서 난 기본적으로 '추가'VAR을 추가 탭 패널의 작성에

은 내가 이런 짓을 'beforetabchange'에 대한 리스너를 설정 위를 원한다. 결국 다음과 같이 보입니다.

listeners: { 
     beforetabchange: { 
      fn: function (tabPanel, newCard, oldCard, eOpts) { 
       if (tabPanel.enableSuspendLayout === true) { 
        newCard.suspendLayout = true; 
       } 
      } 
     } 
    } 
관련 문제