Отображение данных таблицы OData по щелчку плитки в sapui5

У меня есть три плитки для различного статуса в моем представлении XML. Когда я нажимаю на конкретную плитку, она должна перейти к другому XML, где отображаются данные таблицы на основе этого статуса. Я могу перейти к другому представлению по щелчку плитки. Но моя таблица отображает все данные вместо отображения данных для этого конкретного состояния. Я хочу отображать открытые данные о состоянии только при нажатии на соответствующую плитку:

Плитка Вид

Табличное представление

Я отображаю только количество статуса для плитки, используя oModel.read(), Количество к плитке отображается с помощью кода

oModel.read("/ServiceRequestCollection?$filter= CustomerID eq '1001192'", {
      success: function(oData, response) {
      var fld = [];
      fld = oData.results;
      var x = [];
      var count1 = 0;
      var count2 = 0;
      var count3 = 0;
      for (var i = 0; i < oData.results.length; i++) {
      var p1 = "1001190";
      var obj = fld[i];
      if(x[obj.ProductID] === p1) {
      x[obj.ServiceRequestLifeCycleStatusCodeText] = [obj.ServiceRequestLifeCycleStatusCodeText];
      x[obj.ServiceRequestLifeCycleStatusCodeText].push(obj);
      // console.log(x);
      }
      if (fld[i].ServiceRequestLifeCycleStatusCodeText === "Open") {
      var OpenArray = [];
      count1 = count1 + 1;
      OpenArray.push(count1);
      OpenArray = {tilearray:OpenArray};
      var oVizFrame3Model = new sap.ui.model.json.JSONModel(OpenArray);
      var oTile = oView.byId("opentile");
      oTile.setModel(oVizFrame3Model);
      oTile.setNumber(count1);
      // return OpenArray;
      } else {
      if (fld[i].ServiceRequestLifeCycleStatusCodeText === "In Process") {
      var InProcessArray = [];
      count2 = count2 + 1;
      InProcessArray.push(count2);
      InProcessArray = {tilearray:InProcessArray};
      oVizFrame3Model = new sap.ui.model.json.JSONModel(InProcessArray);
      oTile = oView.byId("inprocesstile");
      oTile.setModel(oVizFrame3Model);
      oTile.setNumber(count2);
      // return TileData;
      }
      }
      if (fld[i].ServiceRequestLifeCycleStatusCodeText === "Completed") {
      var CompletedArray = [];
      count3 = count3 + 1;
      CompletedArray.push(count3);
      CompletedArray = {tilearray:CompletedArray};
      oVizFrame3Model = new sap.ui.model.json.JSONModel(CompletedArray);
      oTile = oView.byId("completedtile");
      oTile.setModel(oVizFrame3Model);
      oTile.setNumber(count3);
      // return TileData;
      }
      }
      }
      });

Данные таблицы загружаются из другого массива в это представление. Пожалуйста, предоставьте предложения о том, как это сделать.

1 ответ

Вам нужно использовать фильтр для фильтрации данных. Я показываю вам код, чтобы сделать это для статуса открытого. Здесь iHome1 - это идентификатор вашей таблицы.

 var filters = [];

 var f1 = new  sap.ui.model.odata.Filter('CustomerID', [{operator:"EQ",value1:"1001192"}]);
 var f2 = new  sap.ui.model.odata.Filter('Status', [{operator:"EQ",value1:"SALESREP"}]);
            filters.push(f1);
            filters.push(f2);
            var oModel = new sap.ui.model.odata.ODataModel("/ServiceRequestCollection",
                    false);
            var oHtable1 = sap.ui.getCore().byId("iHome1")
            oHtable1.setModel(oModel);
            oHtable1.bindRows({path:"/ServiceRequestCollection", filters: filters}  );
Другие вопросы по тегам