我想根据专栏选择一个特定的行(Xfeld,SAP专家会理解)。
这是我的代码和数据样本:
<Select id="areaSelect" items="{path: '/AreaSet'}" selectedKey="{=${/AreaSet}.find(function(o){return o.Xfeld === 'X';}).ZArea}">
<core:Item key="{ZArea}" text="{Name}" />
</Select>
示例数据:
“Zarea” | “名字”| “Xfeld”,
“Area1”| “Area1desc”| “X”,
“Area2”| “Cat2desc”| “”,
答案 0 :(得分:0)
超出为binding定义的规范的XML语法中的Javascript代码将不起作用。您可以在代码中使用格式化程序设置所选项目。格式化程序功能将在创建项目时设置选定的键,并设置列中的标记。
<Select id="areaSelect" items="{path: '/AreaSet'}" >
<core:Item key="{
parts : [
{path: 'ZArea'},
{path: 'Xfeld'}
],
formatter: '.formatter.setSelection'
}"
text="{Name}" />
</Select>
在你的控制器中添加格式化程序
...
...
"com/sap/app/controller/BaseController",
"sap/ui/model/json/JSONModel",
"com/sap/app/model/formatter"
], function (BaseController, JSONModel, formatter) {
BaseController.extend("com.sap.app.controller.Detail", {
formatter: formatter,
onInit: function () {
...
...
在您的fomatter中定义一个将设置所选项目键的函数。
sap.ui.define([], function () {
"use strict";
return {
setSelection : function(key, isSelected){
if(isSelected=="X"){
var oSelect = this.byId("areaSelect");
oSelect.setSelectedKey(key);
}
return key;
}
}
});