我有一个使用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);
}});
我已尝试使用表格附加行选择更改方式,但它也无法正常工作。 你能帮忙吗?
谢谢。
答案 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。
也许这不是最好的方式,但确实有效:)