点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我有问题。
我将odata服务绑定到此表,它具有功能(添加,编辑,保存和取消)。
因此,我可以通过单击+按钮添加新行。 它将触发功能onAddViewTaskItem(下面提供的代码)。
因此,我为新项目输入新的描述和子描述。 但是,如果我编辑任何当前项目(而不是新创建的项目),它将触发ListBase对象中的updateItems函数,该函数调用updateAggregation。
在我调试时,它将使用当前的绑定上下文进行更新(我在上下文中仅看到3个项目,而不是4个)。 看来,当我将addItem添加到表中时,它不会将新创建的上下文添加到表的绑定上下文中。
反正有没有更新绑定上下文?
onAddViewTaskItem:函数(oEvent){ this.getModel(" viewSettings")。setProperty("/img/visible",true); this.getModel(" viewSettings")。setProperty("/img/editable",true); this._createAddRow(); }, _createAddRow:函数(){ var _oContext = this._createTaskItemContext(); this._addTableRow(_oContext); }, _createTaskItemContext:函数(oEvent){ 返回this.getModel(" xsodata")。createEntry("/img/TaskItems",{ 属性:{ " TaskItemID":this._generateGuid(), " YearID":this._oScheduleDetailDialog.getBindingContext(" xsodata")。getObject()。YearID, "任务描述": "", " TaskSubDescription":"", " DeleteFlag":"" }, 成功:函数(oEvent){} .bind(this), 错误:函数(oEvent){} .bind(this) }); }, _addTableRow:函数(oContext){ var oScheduleTaskItem = this._createRowControls(); this.getView()。addDependent(oScheduleTaskItem); oScheduleTaskItem.setBindingContext(oContext," xsodata"); this.byId(" tblScheduleItems")。addItem(oScheduleTaskItem); }, _createRowControls:函数(oComboBoxControl){ 返回新的ColumnListItem({ 细胞: [ this._createInputControl(" viewSettings>/editable"," i18n> description"," xsodata> TaskDescription"), this._createInputControl(" viewSettings>/editable"," i18n> subDescription"," xsodata> TaskSubDescription"), this._createCheckboxControl(" viewSettings>/editable"," xsodata> DeleteFlag") ] }); }, _createInputControl:函数(sEditable,sPlaceholder,sBindingProperty){ var _oInputControl = new Input({ maxLength:255, 可编辑:" {" + sEditable +"}", 占位符:" {" + sPlaceholder +"}", 值:" {" + sBindingProperty +"}" }); 返回_oInputControl; }, _createCheckboxControl:函数(sEditable,sBindingProperty){ var _oCheckBoxControl = new CheckBox({ 可编辑:" {" + sEditable +"}", 选择:" {= $ {" + sBindingProperty +"} ==='X'?true:false}", 选择:this.handleDeleteFlagSelect }); 返回_oCheckBoxControl; }, handleDeleteFlagSelect:函数(oEvent){ var bSelected = oEvent.getParameter(" selected"); var sPath = oEvent.getSource()。getBindingContext(" xsodata")。getPath(); this.getModel(" xsodata")。setProperty(sPath +"/img/DeleteFlag",bSelected?" X":""); },
(81.9 kB)
我认为您只能使用jsonmodel做到这一点。
根据我对实现的了解,您是将项目添加到表控件中,而不是模型中。 您应该将新行添加到模型而不是表中。 您已正确完成删除操作。 您从模型中删除。
一周热门 更多>