从选定的CustomTile SAPUI5获取值

时间:2014-06-06 11:40:16

标签: tiles sapui5

我有一个使用CustomTile Control制作的产品目录。当我按下一个磁贴时,我想转到详细信息页面。为此我需要知道压制瓷砖上的一些值,这是我无法做到的。

以下是磁贴和绑定的代码:

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

我已尝试使用表格附加行选择更改方式,但它也无法正常工作。 你能帮忙吗?

谢谢。

2 个答案:

答案 0 :(得分: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获取值,以获得您想要的值。

希望它有所帮助。

答案 1 :(得分:0)

我找到了一种方法来完成这项工作。

在我用来读取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];)

然后,我为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。

也许这不是最好的方式,但确实有效:)