添加新项目并更新sap.m.table中的绑定上下文

2020-09-01 14:05发布

         点击此处--->   EasySAP.com群内免费提供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)

         点击此处--->   EasySAP.com群内免费提供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)
付费偷看设置
发送
2条回答
clasier
1楼-- · 2020-09-01 14:41

我认为您只能使用jsonmodel做到这一点。

太Q了
2楼-- · 2020-09-01 14:41

根据我对实现的了解,您是将项目添加到表控件中,而不是模型中。 您应该将新行添加到模型而不是表中。 您已正确完成删除操作。 您从模型中删除。

一周热门 更多>