Отображение данных таблицы 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} );