cancel
Showing results for 
Search instead for 
Did you mean: 

SAPUI5 single entity binding while using filters

karim_mohamed2
Participant
0 Kudos

Dear Gurus

i created the below OData service that contains two entities

Then i created the app i started with the first view and the controller then in it i wrote the following code

onLogin: function(){
		var sURI = "proxy/http/localhost:9999/MIKMOWCFDataService.svc/";
		var oModel = new sap.ui.model.odata.ODataModel(sURI, false);
		oModel.oHeaders = {
			"DataServiceVersion": "2.0",
			"MaxDataServiceVersion": "2.0"
		};
		var aFilter = [];		
		aFilter.push(new sap.ui.model.Filter("VendorEmail", sap.ui.model.FilterOperator.EQ, this.getView().byId("txtUserName").getValue()));
		aFilter.push(new sap.ui.model.Filter("VendorPassword", sap.ui.model.FilterOperator.EQ,this.getView().byId("txtPassword").getValue() ));
		oModel.read("/tbl_Vendors", {
			filters : aFilter
		});
		sap.ui.getCore().setModel(oModel,"vendors");		
	}

What i'm trying to achieve from the code is to get the user id after he submits his email and password i managed to return the correct row from the DB but after that i was not able to read the ID property from the returned data it's only done through using list and press on the list item to fire another event and then read the ID which is not reasonable in the giving example can any one help me on how to read the property directly from the model Thanks in advance

Accepted Solutions (0)

Answers (3)

Answers (3)

former_member203070
Participant
0 Kudos

I have also same kind of requirement.

@Karim: Please let me know if you could able to get the filtered data.

@Jun Wu: I can see all the entries in console in oData. Not the filtered one.

karim_mohamed2
Participant
0 Kudos

Dear Jun Wu

Thanks for your caring but it seems that i have a problem in my code that doesn't retrieve the data but i manage to use another approach to get the data i used the below code

onLogin: function(){
		var myView = this.getView();
		console.log(myView);
		var myURL = "proxy/http/localhost:9999/MIKMOWCFDataService.svc/tbl_Vendors/?$filter=VendorEmail eq '"+this.getView().byId("txtUserName").getValue()+"' and VendorPassword eq '"+this.getView().byId("txtPassword").getValue()+"'";
		var myJson = new sap.ui.model.json.JSONModel();
		myJson.loadData(myURL);
		myJson.attachRequestSent(function(){
	          //alert("Sent!");
	     });
		myJson.attachRequestFailed(function(){
	          //alert("Failed!");
	     });
		myJson.attachRequestCompleted(function(){
			window.VendorID = myJson.getProperty("/d/0/VendorID");
			//alert(window.VendorID);
			if (window.VendorID === null || window.VendorID === undefined) {
				sap.m.MessageToast.show("The password id incorrect");
			}
		});
		
		myView.setModel(myJson); 	
	}

@Partha Sarathi kindly check the code if it worked for you

junwu
Active Contributor
0 Kudos

you have to check your backend code to see if filtering is done properly there.

junwu
Active Contributor
0 Kudos

you don't have to do anything, that is callback function, "they" will fill the odata for u.

put a breakpoint in that method, and put oData in the console, you will see

junwu
Active Contributor
0 Kudos
oModel.read("/tbl_Vendors", {filters: aFilter
		,success:function(oData,resonse){
//you should be able to get it from oData




}});
karim_mohamed2
Participant
0 Kudos

Dear Jun Wu

Thanks for your reply

I tried your code and added the following lines

var bUser = oModel.getProperty("/VendorID");
				alert(bUser);

but it returned undefined

and one more thing how to pass the oData and the response parameters

Thanks in advance