2017-03-22 4 views
0

特定の行を列に従って選択したいと考えています(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

bindingで定義された仕様を超えたXML構文のJavaScriptコードは機能しません。コード内のフォーマッタを使用して、選択した項目を設定できます。フォーマッター機能は、項目が作成され、列のフラグが設定されているときに選択されたキーを設定します。お使いのコントローラで

<Select id="areaSelect" items="{path: '/AreaSet'}" > 
     <core:Item key="{ 
      parts : [ 
       {path: 'ZArea'}, 
       {path: 'Xfeld'} 
      ], 
      formatter: '.formatter.setSelection' 
     }" 
     text="{Name}" /> 
</Select> 

選択した項目のキーを設定する関数を定義し、あなたのfomatterで

... 
... 
    "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() { 
... 
... 

フォーマッタを追加します。

sap.ui.define([], function() { 
"use strict"; 
return { 
    setSelection : function(key, isSelected){ 
     if(isSelected=="X"){ 
      var oSelect = this.byId("areaSelect"); 
      oSelect.setSelectedKey(key); 
     } 
     return key; 
    } 
} 
}); 
+0

最初に感謝します。第2の方法は、これを実行する最速の方法です(これは完全に機能します)。 – flowx1710

+0

各項目のフォーマッタで実行しているので、少しオーバーヘッドです。しかし、そのようなパフォーマンスの問題はあまりにも少ないです。選択した項目をバックエンドから個別に取得することができます。これは、より良い方法で、プロパティマッピングを行います –

関連する問題