2014-06-06 3 views
0

CustomTile Control로 만든 제품 카탈로그가 있습니다. 타일 ​​한 개를 누르면 세부 정보 페이지로 가고 싶습니다. 그 때문에 나는 누를 수있는 타일에있는 값 중 일부를 알아야합니다. 여기 선택한 CustomTile SAPUI5에서 값 가져 오기

는 타일에 대한 코드와 결합이다

var sServiceUrl = "/sap/opu/odata/sap/ztestefardas_srv/"; //URL do serviço oDATA 
var oModel = new sap.ui.model.odata.ODataModel(sServiceUrl); 
sap.ui.getCore().setModel(oModel); 

OData.read ("/ SAP/OPU/하나로, OData/SAP/ztestefardas_srv/catalogo"

 function (response){ 
    for(var key in response.results) { 
     var value = response.results[key]; 

    var oImg =new sap.ui.commons.Image({ 
     width :"160px", 
     height :"160px" 
     }).setSrc(value["img"]); 
    oImg.addStyleClass("img_cat"); 

    var oMatxt =new sap.ui.commons.TextView({ 
    text: value["matxt"], 
    width: "200px" 
    }).addStyleClass("matxt"); 

    var oAtr =new sap.ui.commons.TextView({ 
    text: "Atribuídos: "+value["n_atr"], 
    width: "200px" 
    }).addStyleClass("second_line"); 

    if (value["n_dis"] > 0){ 
    var oDis =new sap.ui.commons.TextView({ 
     text: "Disponíveis: "+value["n_dis"], 
     width: "200px" 
     }).addStyleClass("second_line_disp"); 
    } else { 
    var oDis =new sap.ui.commons.TextView({ 
     text: "Disponíveis: "+value["n_dis"], 
     width: "200px" 
     }).addStyleClass("second_line"); 
    } 

    var oPtxt =new sap.ui.commons.TextView({ 
    text: "Próximo levantamento:", 
    width: "200px" 
    }).addStyleClass("third_line"); 

    var oPlev =new sap.ui.commons.TextView({ 
    text: value["p_lev"], 
    width: "200px" 
    }).addStyleClass("third_line"); 

    var oLayout = new sap.ui.commons.layout.VerticalLayout({ 
content: [oImg,oMatxt,oAtr,oDis,oPtxt,oPlev] 

}) ; 나는 테이블을 시도했습니다

var oTile = new sap.m.CustomTile({ 
    content:oLayout, 
    press: function(oEvento){ 



     //missing code to get values from selected tile 
     oNavContainer.to(Page2); 
     } 
      }).addStyleClass('sapMTile'); 


     oContainer.addTile(oTile); 
    }}); 

은 행 선택 변경 방법을 첨부,하지만 너무 작동하지 않습니다. 도와주세요.

감사합니다.

답변

0

이 방법을 찾았습니다. I는 하나로, OData의 데이터를 판독하는 데 사용 FOR 내의

:

oTile.data("matnr", value["Matnr"]); oTile.data("matxt", value["Itmfdx"]); oTile.data("n_dis", value["n_dis"]); oTile.data("n_atr", value["n_atr"]); oTile.data("endda", value["Endda"]); oTile.data("itmfd", value["Itmfd"]);

이러한 value["xpto"] 응답의 열쇠 그럼 (OData.read("/sap/opu/odata/sap/zmm_fardamentos_srv/CatalogoSet?sap-ui-language=PT",

 function (response){ 
    for(var key in response.results) { 
     var value = response.results[key];) 

결과, I 함수를 만들어 oTile의 attachPress 이벤트는 다음과 같습니다.

oTile.attachPress(function(){ 
      sap.ui.getCore().getControl("selimg").setSrc(this.data("img")); 
      sap.ui.getCore().getControl("bigpic").setSrc(this.data("img")); 
      sap.ui.getCore().getControl("nome_material").setText(this.data("matxt")); 
      sap.ui.getCore().getControl("itmfd_var").setText(this.data("itmfd")); 
      sap.ui.getCore().getControl("atr_det").setText(this.data("n_atr")); 
      sap.ui.getCore().getControl("disp_det").setText(this.data("n_dis")); 
      sap.ui.getCore().getControl("lev_data").setText(this.data("endda")); 

getControl 내의 이름은 값을 보유 할 변수의 ID입니다.

은 어쩌면 이것은 좋은 호텔 방법이 아니다, 그러나 확실히 당신의 방법도 작동,

1

이 함수에 다음 코드를 추가합니다 (응답) 방법 :

var valueModel = new sap.ui.model.json.JSONModel({ 
       "Value": "##your value here##", 
      }); 
oLayout.setModel(valueModel); 

언론 기능 처리기에서 다음 코드를 추가합니다 :

var oLayout = oEvento.getSource().getContent(); 
var value = oLayout .getModel().getProperty("/Value"); 

그런 다음 당신이 얻을 수있는 값을 CustomTile에서 사용하여 데이터 바인딩을 사용하여 원하는 값을 가져옵니다.

희망이 있습니다.

+0

안녕하세요 :) 작동하지만, 나는 그 동안 다른 하나를 발견했다. 고맙습니다! –

관련 문제