Skip to Content
0
Former Member
Jul 28, 2016 at 02:24 AM

Binding rows aggregation for Planning Calendar

1270 Views

Hi,

In my controller, I am creating a named model on the PlanningCalendar control and trying to bind the rows aggregation's path.


var oModel = this.getOwnerComponent().getModel().oData;
var oFilteredModel = {};
for(var key in oModel) {
  if(oModel.hasOwnProperty(key)) {
     var obj = oModel[key];
     var startDate = obj.StartDate
     var finishDate = obj.FinishDate;
     //this is a general purpose filter, I need to know what you are sending when you send   //a date value to finishdate with no value   if(startDate  && finishDate) {
     oFilteredModel[key] = obj;
   }
 }
}var oNewModel = new JSONModel({WorkOrderDetailSet:oFilteredModel});
console.log(oNewModel);
var oCalendar = this.getView().byId("PC1");
oCalendar.setModel(oNewModel,"calendar_model");
                         oCalendar.bindAggregation("rows",{path:"calendar_model/>WorkOrderDetailSet"});

This is my view layer:

<PlanningCalendar id="PC1" startDate="{FinishDate}" rows="{path: 'calendar_model>/WorkOrderDetailSet'}" appointmentSelect="handleAppointmentSelect" rowSelectionChange="handleAppointmentSelect">

<toolbarContent>

<Title text="Work Orders Timeline" titleStyle="H4"/>

</toolbarContent>

<rows>

<PlanningCalendarRow title="{WorkorderNo}" text="{WorkorderText}" >

<appointments>

<u:CalendarAppointment startDate="{StartDate}" endDate="{FinishDate}">

</u:CalendarAppointment>

</appointments>

</PlanningCalendarRow>

</rows>

</PlanningCalendar>

However, I get an error when executing this code that says:

Uncaught Error: Missing template or factory function for aggregation rows of Element sap.m.PlanningCalendar#__component0---worklist--PC1

I would ideally like to do the binding in the XML view itself but that does not seem to be possible. If that is not possible, I would like to bind the aggregation path in the view leaving the template to be bound in the xml view.