使用过滤器时SAPUI5单实体绑定

时间:2016-10-15 08:39:26

标签: odata sapui5

我是sapui5世界的新手,我一开始就陷入困境并寻求你的帮助 我创建了下面的OData服务,其中包含两个实体enter image description here

然后我创建了应用程序,我开始使用第一个视图和控制器然后在其中我编写了以下代码



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");		
	}




我试图从代码中获得的是在提交他的电子邮件和密码之后获取用户ID我设法从数据库返回正确的行但是之后我无法读取ID属性从返回的数据中,它只通过使用的列表完成并按下列表项以触发另一个事件然后读取给出示例中不合理的ID可以任何人帮助我如何直接从该模型 提前致谢

1 个答案:

答案 0 :(得分:0)

您需要将Id放入全局变量,然后将变量绑定到实体键。

    onInit: function() {
        var oEventBus = sap.ui.getCore().getEventBus();
        sap.ui.core.UIComponent.getRouterFor(this).attachRouteMatched(this.onRouteMatched, this);
    },

    //routing validation
    onRouteMatched: function(oEvent) {
        var oParameters = oEvent.getParameters();
        // when detail navigation occurs, update the binding context
        if (oParameters.name !== "CreateDoc") {

            return;
        }

        console.log(oParameters.name);
        //put your entity name here
        var sEntityPath = "/MasterSet(Id='"+ yourGlobalVariable +"')";
        this.bindView(sEntityPath);

    },

    //binding initial data to sapui5 page
    bindView: function(sEntityPath) {
        var oView = this.getView();
        oView.bindElement(sEntityPath);

        // check if the data already on the client
        if (!oView.getModel().getData(sEntityPath)) {
            // check that the entity specified actually was found
            oView.getElementBinding().attachEventOnce("dataReceived", jQuery.proxy(function() {
                var oData = oView.getModel().getData(sEntityPath);
                console.log(oData);
                if (!oData) {
                    // this.showEmptyView();
                } else {
                    // 
                }
            }, this));
        }

    },

尝试在每个步骤中使用console.log来理解流程。