oData读取绑定到sap.m.Select中的问题
我有下一期: 我试图将oData响应绑定到XML视图中的sap.m.Select,但绑定失败 我在视图中有两个选择选项,一个直接从后端绑定,但当我从第一个选择中选择一个时,我需要将oData读取到另一个服务,以显示在第一个选择中选择的值的详细信息 我拥有的代码如下所示:oData读取绑定到sap.m.Select中的问题,odata,sapui5,Odata,Sapui5,我有下一期: 我试图将oData响应绑定到XML视图中的sap.m.Select,但绑定失败 我在视图中有两个选择选项,一个直接从后端绑定,但当我从第一个选择中选择一个时,我需要将oData读取到另一个服务,以显示在第一个选择中选择的值的详细信息 我拥有的代码如下所示: <f:FormElement id="label17" label="Parte Objeto"> <f:fields&g
<f:FormElement id="label17" label="Parte Objeto">
<f:fields>
<Select enabled="true" id="objeto_grupo"
items="{path: '/CatalogosComboSet', filters : [ { path : 'IKatalogart', operator : 'EQ', value1 : 'B'}, { path : 'IStep', operator : 'EQ', value1 : '1'} ] }"
name="" placeholder="Tecnico ejecutor" selectedKey="{Codegruppe}" change="detalleSelect">
<items>
<core:ListItem id="__item_objeto_1" key="{Codegruppe}" text="{Kurztext}"/>
</items>
</Select>
<Select enabled="true" id="objeto_detalle" name="" placeholder="Objeto" selectedKey="0">
<items>
</items>
</Select>
</f:fields>
</f:FormElement>
回答没问题,我有数据,但模板不起作用,我不知道我做错了什么,如果有人知道,我将非常感激。下面的答案假设您只有一个oData服务和两个不同的实体集 在这种情况下,您希望在每个sap.m.Select控件中绑定不同的实体集 我还假设两个实体集之间存在某种关系,这可以通过在网关服务中使用导航属性来实现 最重要的部分: 看法 如果您确实有两种不同的服务,那么您的应用程序中将需要两种OData模型 通过对第二个sap.m.Select控件使用函数调用,可以强制该控件使用不同的服务
然后,您必须使用其“items”属性中的方法调整第二个Select中的绑定。您可以发布您的服务元数据吗?您有两个不同的oData服务,还是只想将第二个选项绑定到不同的EntitySet?是相同的oData服务,不同的网关。这是什么意思?您是否在两个不同的后端系统中部署了相同的oData服务?你想实现什么?不,是相同的后端,相同的网关,不同的实体设置,所以我相信我的答案非常接近你需要的我尝试了这个,但对我不起作用,我找到了我的解决方案!我稍后会发布解决方案是什么?
detalleSelect: function(oEvent) {
var id = oEvent.getSource();
var catalogo, codGrupo;
switch (id.getId()) {
case "__xmlview0--objeto_grupo":
catalogo = "B";
var codGrupo = this.getView().byId("objeto_grupo").getSelectedKey();
break;
case "__xmlview0--sintoma_grupo":
catalogo = "C";
var codGrupo = this.getView().byId("sintoma_grupo").getSelectedKey();
break;
case "__xmlview0--causa_grupo":
catalogo = "5";
var codGrupo = this.getView().byId("causa_grupo").getSelectedKey();
break;
default:
}
this.selectOdataFill(catalogo, codGrupo);
},
selectOdataFill: function(catalogo, codGrupo) {
var comboDetalle;
switch (catalogo) {
case "B":
comboDetalle = "objeto_detalle";
break;
case "C":
comboDetalle = "sintoma_detalle";
break;
case "5":
comboDetalle = "causa_detalle";
break;
default:
}
console.log(comboDetalle);
var step = 2;
var afilters = new Array();
var filterByName = new sap.ui.model.Filter("IKatalogart", sap.ui.model.FilterOperator.EQ, catalogo);
afilters.push(filterByName);
var filterByName = new sap.ui.model.Filter("IStep", sap.ui.model.FilterOperator.EQ, step);
afilters.push(filterByName);
var filterByName = new sap.ui.model.Filter("ICodegruppe", sap.ui.model.FilterOperator.EQ, codGrupo);
afilters.push(filterByName);
var oListBox = this.byId(comboDetalle);
var sServiceUrl = "/sap/opu/odata/sap/ZPMGW_ORDENPMRFC_SRV_02/";
var oConfig = {
metadataUrlParams: {},
json: true,
defaultBindingMode: "OneWay",
defaultCountMode: "Inline",
useBatch: true // defaultOperationMode: "Auto"
};
var oModel = new sap.ui.model.odata.v2.ODataModel(sServiceUrl, oConfig);
oModel.read("/CatalogosComboDetalleSet", {
filters: afilters,
success: function(oData, response) {
var oItem = new sap.ui.core.ListItem({
key: "{Codegruppe}",
text: "{Kurztext}"
});
var oJSModel = new sap.ui.model.json.JSONModel(oData);
console.log(oJSModel);
oListBox.setModel(oJSModel, "myModel");
console.log(oListBox.getModel());
oListBox.bindAggregation("items", {
path: "{/oData>results}",
template: oItem
});
},
error: function(oError) {}
});
<f:SimpleForm layout="ResponsiveGridLayout" title="StackOverflow - Question 48965163" >
<f:content>
<Label text="Category"/>
<Select items="{/Categories}" change="onChangeCategory">
<items>
<core:Item text="{Name}" key="{Id}"></core:Item>
</items>
</Select>
<Label text="SubCategory"/>
<Select id="subcategory-select" items="{ToSubCategories}">
<items>
<core:Item text="{Name}" key="{Id}"></core:Item>
</items>
</Select>
</f:content>
</f:SimpleForm>
onInit: function(){
this._subcategorySelect = this.byId("subcategory-select");
},
onChangeCategory: function(oEvent){
var oSelectedItem = oEvent.getParameters().selectedItem;
var oContext = oSelectedItem.getBindingContext();
// var oCategory = oContext.getObject();
this._subcategorySelect.bindElement(oContext.getPath());
}