2016-09-06 4 views
0

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

Tile View

Table View

отобразить только подсчет статуса плитки с использованием 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; 
     } 
     } 
     } 
     }); 

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

ответ

0

Для фильтрации данных вам необходимо использовать фильтр. Я покажу вам код, чтобы сделать это для статуса как Open. Здесь «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} ); 
+0

Благодарим за предложение Ajay. Я попробовал что-то похожее на ваше предложение и получил три отдельных массива для каждого состояния. Я также могу получить событие, на которое нажата плитка. То, что я не могу сделать, это связать определенный массив с таблицей при щелчке соответствующей плитки. –

+0

Скажите, когда щелкнула открытая плитка. Я могу связать только один из 3 массивов. Пожалуйста, предоставьте свои предложения, я иду по правильному пути или мне нужно изменить свой код. –

+0

Было бы очень полезно, если бы эксперты предоставили предложения для этого же. –