2016-08-10 2 views
0

Ich versuche, eine Seite mit Standardkacheln innerhalb eines Kachelcontainers zu erstellen, die die Anzahl der (in der Tabelle aufgerufenen) Datensätze anzeigen (die genehmigt/abgelehnt/ausstehen) diese Fliese nicht die Einträge der vollständigen Tabelle.Standardkacheln mit einer bestimmten Anzahl von Datensätzen in der Datenbanktabelle

Der folgende Code zeigt die Datensätze in der gesamten Tabelle an.

Hier ist der Code:

tiletest.view.js

var oDataModel = new sap.ui.model.odata.ODataModel("https://.../tiletest/tile.xsodata", true); 

var items; 
oDataModel.read("/Expense", null, null, false, function success(oData) { 
     items = oData.results.length; 
    }, 
    function failure() {}); 
var page1 = new sap.m.Page("page1", { 
     showHeader: false 
    }), 
    content: [ 
     new sap.m.TileContainer({ 
      tiles: [ 
       new sap.m.StandardTile("tile", { 
        title: "Request", 
        info: "Create Request", 
        infoState: "Success", 
        press: function() { 
         oController.ab(); 
        } 
       }), 
       new sap.m.StandardTile("tile1", { 
        number: items, 
        title: "Approved", 
        info: "Approved Requests", 
        infoState: "Success", 
        press: function() { 
         oController.appr(); 
        } 
       }), 
       new sap.m.StandardTile("tile2", { 
        number: items, 
        title: "Rejected", 
        info: "Rejected Request", 
        infoState: "Warning", 
        press: function() { 
         oController.appr1(); 
        } 
       }) 
      ] 
     }) 
    ] 
}); 

return page1; 
} 

tiletest.controller.js

sap.ui.controller("test1.tiletest", { 
    ab: function() { 
     var app = sap.ui.getCore().byId("AppID"); 
     app.to("list_id2"); 
    }, 

    ab2: function() { 
     var app = sap.ui.getCore().byId("AppID"); 
     app.to("list_id6"); 
    }, 

    appr: function() { 
     var app = sap.ui.getCore().byId("AppID"); 
     app.to("list_id4"); 
    } 
}); 

tile.xsodata

service{ 
"DATABASE_NAME"."TABLE_NAME" as "Expense"; 
} 
+0

schön aussieht. Gibt es ein Problem? – jpenninkhof

+0

Problem ist, wie die genehmigten oder abgelehnten Anfragen in der Eigenschaft "number" von Standard Tile angezeigt werden. Ich möchte die Datensätze auswählen, die genehmigt wurden, und ihre Nummer auf der Genehmigten Kachel anzeigen. – Javdon

Antwort

0

Der unten angegebene Code ruft die Anzahl der genehmigten oder abgelehnten Anfragen ab und wird in der Tile-Nummer angezeigt.

tiletest.view.js

createContent : function(oController) { 
    var oDataModel = new sap.ui.model.odata.ODataModel("https://accountname/packagename/tile.xsodata", true); 


var appritems,rejectitems; 


oDataModel.read("/Expense/?$filter=STATUS eq 'Approved'", null, null, false,function success(oData){ appritems=oData.results.length;}, function failure(){}); 
oDataModel.read("/Expense/?$filter=STATUS eq 'Rejected'", null, null, false,function success(oData){ rejectitems=oData.results.length;}, function failure(){}); 
var items; 
var page1 = new sap.m.Page("page1", { 
    content :[ 
new sap.m.TileContainer({ 
    tiles : [ 
new sap.m.StandardTile("tile1",{ 
     number: appritems, 
     title : "Approved", 
     info: "Approved Requests", 
     infoState : "Success", 
     press : function() { 
      oController.appr(); 
     } 
    }), 
    new sap.m.StandardTile("tile2",{ 
     number: rejectitems, 
     title : "Rejected", 
     info: "Rejected Request", 
     infoState : "Warning", 
     press : function() { 
      oController.appr1(); 
     } 
    }) 

    ] 

}) 
      ] 
}); 
return page1; 
} 
1

Um die Anzahl der genehmigten oder zurückgewiesenen Anforderungen anzuzeigen, müssen Sie 2 ODataModel.read-Anweisungen ausführen, die eine $ -Zählung basierend auf dem richtigen Filter abrufen. Beispiel:

// These filters are the filters that should be applied to your tile count 
var _mFilters = { 
    approved: [new sap.ui.model.Filter("Approved", "EQ", true)], 
    rejected: [new sap.ui.model.Filter("Rejected", "EQ", true)] 
}; 

// These are the counts that should be displayed on your filter buttons. 
// Bind them from your view 
var oViewModel = new JSONModel({ 
    approved: 0, 
    rejected: 0 
}); 
this.getView().setModel(oViewModel, "view"); 

// This will run the 2 read statement. One with each of the filters in 
// effect. The result will go into the oViewModel values declared above. 
jQuery.each(_mFilters, function (sFilterKey, oFilter) { 
    oModel.read("/Expense/$count", { 
     filters: oFilter, 
     success: function (oData) { 
      var sPath = "/" + sFilterKey; 
      oViewModel.setProperty(sPath, oData); 
     } 
    }); 
}); 

Wenn Sie dann die Anzahl Eigenschaften der Tile-Steuerelemente binden, z. B .: {view> matMaster}. Jede Kachel sollte ihre jeweilige Anzahl anzeigen.

Verwandte Themen