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.