2016-07-06 8 views
0

Я использую следующий код (в контроллере):Как сделать SAPUI5 TreeTable расширенным по умолчанию?

onAfterRendering: function() { 
    var t, i; 
    if (!this.initExpand) { 
     try { 
      t = this.getView().getContent()[1]; 
      for (i=0; i<t.getRows().length; i++) { 
       t.expand(i); 
      } 
      this.initExpand = true; 
     } catch (e) { 
      console.log("expand failed: "+e.message); 
     } 
    } 
}, 

для начального (после загрузки и рендеринга) расширение всех узлов из следующих sap.ui.table.TreeTable (с учетом):

<mvc:View 
    displayBlock="true" 
    xmlns:l="sap.ui.layout" 
    xmlns:table="sap.ui.table" 
    xmlns:mvc="sap.ui.core.mvc" 
    controllerName="sap.app.controller.scr1" 
> 
    <l:HorizontalLayout> 
     <SearchField liveChange="onSearch"/> 
    </l:HorizontalLayout> 
    <table:TreeTable rows="{/root}" 
     selectionMode="None" 
     visibleRowCount="11" 
     showColumnVisibilityMenu="true" 
     enableCellFilter="true" 
     enableColumnReordering="false" 
     class="sapUiSizeCompact" 
     expandFirstLevel="true" 
    > 
     <table:columns> 
     ... 
     </table:columns> 
    </table:TreeTable> 
</mvc:View> 

Но иногда узлы все еще не расширены (они все еще рухнули).

Есть ли какой-нибудь другой (более стабильный) способ для первоначального расширения всех узлов sap.ui.table.TreeTable?

ответ

2

Код ниже работы:

onAfterRendering: function(){ 

    var oTreeTable = this.getView().byId("myTreeTableId"); 
    oTreeTable.expandToLevel(3); //number of the levels of the tree table. 

} 

Где 3 'это количество уровней для вашего стола дерева и,

myTreeTableId: это идентификатор элемента управления в целях XML :

<table:TreeTable id="myTreeTableId" ... 
+0

Я не могу получить этот объект TreeTable с помощью функции byId, потому что идентификатор этой TreeTable (contatenated с идентификатором представления) является динамическим (изменения). Однако this.getView(). GetContent() [1] .expandToLevel (3); действительно всегда работает! Спасибо за ответ, @ carlosmendes-pt! – valeryan

2

Посмотрите на это demo.

/* code to expand */ 
for (i=0; i<oTable.getRows().length; i++) { 
    oTable.expand(i); 
} 
+0

В чем разница между вашим циклом «for» и моим циклом «для»? «oTable» более устойчив, чем «t»? – valeryan

+0

Хотя я не уверен в этом, я просто хотел предложить вам использовать объект Table вместо того, чтобы получать элемент из агрегации представления контента. посмотрите, работает ли это! – Dopedev

+0

Я добавил также код xml, где вы можете видеть, что this.getView(). GetContent() [1] - объект TreeTable. Я не могу получить этот объект TreeTable с помощью функции byId, потому что идентификатор этой TreeTable (contatenated с идентификатором представления) является динамическим (изменения). – valeryan

 Смежные вопросы

  • Нет связанных вопросов^_^