У меня проблема. Я привязываю службу oData к этой таблице, и она имеет функции (Добавить, Изменить, Сохранить и Отменить).
Так что я могу добавить новыйстрок, нажав кнопку +, которая вызовет onAddViewTaskItem()
(код приведен ниже).
Поэтому я ввожу новое описание и подописание дляновый предмет. Однако, если я редактирую какие-либо текущие элементы (не новые созданные), он вызовет updateItems()
в ListBase
объекте, который вызывает updateAggregation
.
При отладке он обновляется с текущими контекстами привязки(который я вижу там только 3 пункта в контексте вместо 4). Кажется, что когда я addItem
к таблице, он не добавляет новый созданный контекст в контекст привязки таблицы.
Есть ли способ обновить контекст привязки?
onAddViewTaskItem: function(oEvent) {
this.getModel("viewSettings").setProperty("/visible", true);
this.getModel("viewSettings").setProperty("/editable", true);
this._createAddRow();
},
_createAddRow: function() {
var _oContext = this._createTaskItemContext();
this._addTableRow(_oContext);
},
_createTaskItemContext: function(oEvent) {
return this.getModel("xsodata").createEntry("/TaskItems", {
properties: {
"TaskItemID": this._generateGuid(),
"YearID": this._oScheduleDetailDialog.getBindingContext("xsodata").getObject().YearID,
"TaskDescription": "",
"TaskSubDescription": "",
"DeleteFlag": ""
},
success: function(oEvent) {}.bind(this),
error: function(oEvent) {}.bind(this)
});
},
_addTableRow: function(oContext) {
var oScheduleTaskItem = this._createRowControls();
this.getView().addDependent(oScheduleTaskItem);
oScheduleTaskItem.setBindingContext(oContext, "xsodata");
this.byId("tblScheduleItems").addItem(oScheduleTaskItem);
},
_createRowControls: function(oComboBoxControl) {
return new ColumnListItem({
cells: [
this._createInputControl("viewSettings>/editable", "i18n>description", "xsodata>TaskDescription"),
this._createInputControl("viewSettings>/editable", "i18n>subDescription", "xsodata>TaskSubDescription"),
this._createCheckboxControl("viewSettings>/editable", "xsodata>DeleteFlag")
]
});
},
_createInputControl: function(sEditable, sPlaceholder, sBindingProperty) {
var _oInputControl = new Input({
maxLength: 255,
editable: "{" + sEditable + "}",
placeholder: "{" + sPlaceholder + "}",
value: "{" + sBindingProperty + "}"
});
return _oInputControl;
},
_createCheckboxControl: function(sEditable, sBindingProperty) {
var _oCheckBoxControl = new CheckBox({
editable: "{" + sEditable + "}",
selected: "{= ${" + sBindingProperty + "} === 'X' ? true : false}",
select: this.handleDeleteFlagSelect
});
return _oCheckBoxControl;
},
handleDeleteFlagSelect: function(oEvent) {
var bSelected = oEvent.getParameter("selected");
var sPath = oEvent.getSource().getBindingContext("xsodata").getPath();
this.getModel("xsodata").setProperty(sPath + "/DeleteFlag", bSelected ? "X" : "");
},