删除行后表不会刷新

时间:2018-03-29 18:13:03

标签: sapui5

enter image description here我在删除sap.m.Table中的记录时面临两个问题,如下所述。

  1. 使用删除按钮删除行后,其他行也会消失。只有在刷新页面后,我才能看到这些记录。

    No data Page

  2. 删除行后我使用了成功和错误消息,但没有出现。

  3. Table.view.xml

    <mvc:View
      xmlns:core="sap.ui.core"
      xmlns:mvc="sap.ui.core.mvc"
      xmlns="sap.m"
      controllerName="sem.stock_app.controller.table"
    >
      <Page
        title="Material Status"
        showNavButton="true"
        navButtonPress="onNavBack"
      >
        <Table id="table"
          growing="true"
          mode="MultiSelect"
          items="{odata>np_on_matid}"
        >
          <columns>
            <Column>
              <CheckBox text="Select Entry"/>
            </Column>
            <Column>
              <Text text="Material ID"/>
            </Column>
            <Column>
              <Text text="Category"/>
            </Column>
            <Column>
              <Text text="Material Desc"/>
            </Column>
            <Column>
              <Text text="Plant"/>
            </Column>
          </columns>
          <items>
            <ColumnListItem type="Active" press="onPress">
              <CheckBox selected="{false}"/>
              <Text text="{odata>Matid}"/>
              <Text text="{odata>Category}"/>
              <Text text="{odata>Matdesc}"/>
              <Text text="{odata>Plant}"/>
            </ColumnListItem>
          </items>
        </Table>
        <Button
          text="Delete"
          enabled="true"
          press="onDelete"
        />
      </Page>
    </mvc:View>
    

    Table.Controller.js

    sap.ui.define([
      "sap/ui/core/mvc/Controller",
      "sap/ui/model/json/JSONModel",
      "sap/ui/model/Filter",
      "sap/ui/core/routing/History",
      "sap/m/MessageToast",
      "sap/m/MessageBox"
    ], function(Controller, JSONModel, Filter, History, MessageToast, MessageBox) {
      "use strict";
    
      return Controller.extend("sem.stock_app.controller.table", {
        onInit: function() {
          this.getOwnerComponent().getRouter().getRoute("r2").attachPatternMatched(this.mynav, this);
        },
    
        mynav: function(oeve) {
          var key = this.getOwnerComponent().getModel("odata").createKey("matlistSet", {
            "Matid": oeve.getParameters().arguments.noti
          });
          this.getView().bindElement({
            path: "odata>/" + key,
            parameters: {
              expand: "np_on_matid"
            }
          });
        },
    
        onNavBack: function() {
          var oHistory = History.getInstance();
          var sPreviousHash = oHistory.getPreviousHash();
          if (sPreviousHash !== undefined) {
            window.history.go(-1);
          } else {
            var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
            oRouter.navTo("r1", {}, true);
          }
        },
    
        onPress: function(oitem) {
          var x = oitem.getSource().getBindingContext("odata").getProperty("Matid");
          this.getOwnerComponent().getRouter().navTo("r3", {
            matnr: x
          });
        },
    
        onDelete: function() {
          var i, tbl, aSelectedProducts, sPath, oProduct, oProductId;
          tbl = this.byId("table").getSelectedItems();
          aSelectedProducts = this.byId("table").getSelectedItems();
          if (aSelectedProducts.length) {
            for (i = 0; i < aSelectedProducts.length; i++) {
              oProduct = aSelectedProducts[i];
              oProductId = oProduct.getBindingContext("odata").getProperty("Matid");
              sPath = oProduct.getBindingContextPath();
              this.getOwnerComponent().getModel("odata").remove(sPath, {
                success: this._handleUnlistActionResult.bind(this, oProductId, true, i + 1, aSelectedProducts.length),
                error: this._handleUnlistActionResult.bind(this, oProductId, false, i + 1, aSelectedProducts.length)
              });
            }
          } else {
            this._showErrorMessage(this.getModel("i18n").getResourceBundle().getText("TableSelectProduct"));
          }
        },
    
        _handleUnlistActionResult: function(sProductId, bSuccess, iRequestNumber, iTotalRequests, oData, oResponse) {
          if (iRequestNumber === iTotalRequests) {
            MessageToast.show(this.getModel("i18n").getResourceBundle().getText("StockRemovedSuccessMsg", [iTotalRequests]));
          }
        },
    
      });
    });
    

    Component.js

    sap.ui.define([
      "sap/ui/core/UIComponent",
      "sap/ui/Device",
      "sem/stock_app/model/models"
    ], function(UIComponent, Device, models) {
      "use strict";
    
      return UIComponent.extend("sem.stock_app.Component", {
        metadata: {
          manifest: "json"
        },
    
        init: function() {
          var url = "/sap/opu/odata/sap/ZMATLIST_SRV_03";
          var odata = new sap.ui.model.odata.ODataModel(url, {
            json: true
          });
          this.setModel(odata,"odata");
          UIComponent.prototype.init.apply(this, arguments);
          this.getRouter().initialize();
          this.setModel(models.createDeviceModel(), "device");
        }
      });
    });
    

1 个答案:

答案 0 :(得分:1)

正如评论中所讨论的,问题是:

  1. 使用已失去维护的/3 since long time ago
  2. 后端系统中没有实施sap.ui.model.odata.ODataModel操作。