2016-03-09 1 views
0

При использовании Worklist (и даже мастер-деталь) шаблоны вы имеете следующие события в функции onInit:Есть ли событие в sap.m.PlanningCalendar для загруженных строк?

oTable.attachEventOnce("updateFinished", function(){ 
    // Restore original busy indicator delay for worklist's table 
    oViewModel.setProperty("/tableBusyDelay", iOriginalBusyDelay); 
}); 

В view.xml у вас также есть EventHandler для updateFinished, которые вы можете установить, так что вы в состоянии сделать материал, когда данные будут получены в вашем списке.

В PlanningCalendar у вас нет такого обработчика событий, как мы обрабатываем такие вещи для такого компонента?

Логика Я пытаюсь выполнить следующий:

<PlanningCalendar 
    id="PC1" 
    rows="{ 
     path: '/DeveloperSet' 
    }" 
    viewKey="Day" 
    busyIndicatorDelay="{planningView>/calendarBusyDelay}" 
    noDataText="{planningView>/calendarNoDataText}" 
    appointmentSelect="onAppointmentSelect" 
    rowSelectionChange="onDeveloperRowChange" 
    startDateChange="onStartDateChange"> 
    <toolbarContent> 
     <Title 
      text="Title" 
      titleStyle="H4" /> 
     <ToolbarSpacer /> 
     <Button 
      id="bLegend" 
      icon="sap-icon://legend" 
      type="Transparant" 
      press="onShowlegend" />    
    </toolbarContent> 
    <rows> 
     <PlanningCalendarRow 
      icon="{Pic}" 
      title="{Name}" 
      text="{Role}" /> 
    </rows> 
</PlanningCalendar> 

Я хочу, чтобы загрузить и добавить «назначения» только для видимой части (фильтр на старте и ENDDATE) календаря, так Я хочу сам выполнить oDataModel.read. Но строки (DeveloperSet) всегда должны оставаться неизменными. Поэтому я должен «ждать» до тех пор, пока в календаре не будут данные/строки, заполненные календарем, а затем мои ручные вызовы для получения встреч.

Так что мне нужно что-то сделать, когда данные извлекаются, но нет события updateFinished для календаря?

Есть ли у кого-нибудь идея о том, как это решить?

Заранее благодарен!

С наилучшими пожеланиями,

Робин

ответ

0

событие «updateFinished» при использовании в таблице или в списке вызывается из метода updateList, этот метод обрабатывает обновление агрегирования «список»

PlanningCalendar делает не имеет метода updateRows, поэтому нет события «updateFinished»

Вы можете прослушать событие dataReceived на привязке строки, если у вас есть один

OnInit: function(){ 
... 
    this.oPlanningCalendar = this.byId("PC1") 
    var oBinding = oPlanningCalendar.getBinding("rows"); 
    oBinding.attachDataReceived(this.fnDataReceived, this); 

еще вы можете расширить контроль и добавить свой собственный метод updateRows и огнь «updateFinished», тест хака ниже показывает, что он будет работать

OnInit: function(){ 
... 
    this.oPlanningCalendar = this.byId("PC1"); 
    this.oPlanningCalendar.updateRows = function(sReason) { 
     this.oPlanningCalendar.updateAggregation("rows"); 

     var oBinding = this.oPlanningCalendar.getBinding("rows"); 
     if (oBinding) { 
     jQuery.sap.log.info("max rows = " + oBinding.getLength() || 0); 
     } 
    }.bind(this); 
+0

Имеет ли событие DataReceived обстрелял с jsonModel или только с oDataModel. С JSONModel я вижу, что событие никогда не запускается? – Veeraraghavan

+0

fireDataReceived только вызывается в сценариях OData, где запрашиваются данные, попробуйте updateRows –