根据特定列从选择框中选择一个项目

时间:2017-03-22 17:13:25

标签: javascript drop-down-menu sap sapui5 sap-fiori

我想根据专栏选择一个特定的行(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”| “”,

1 个答案:

答案 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;
    }
}
});