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 구문의 자바 스크립트 코드는 작동하지 않습니다. 코드에서 포맷터를 사용하여 선택한 항목을 설정할 수 있습니다. 포맷터 기능은 항목이 작성되고 컬럼의 플래그가 설정 될 때 선택된 키를 설정합니다. 컨트롤러에서

<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

첫 번째 감사, 두 번째로 동일한 작업을 수행하는 가장 빠른 방법입니다 (완벽하게 작동합니다)? – flowx1710

+0

각 항목에 대한 포맷터를 통해 실행 중이므로 약간의 오버 헤드가 있습니다. 그러나 성능 문제가 너무 적습니다. 선택한 항목을 백엔드에서 개별적으로 가져와 더 좋을 수 있으며 속성 매핑을 수행 할 수 있습니다. –