padibro
padibro

Reputation: 1374

How retrieve details of table element clicked?

I have a table and I want retrieve a item details of a element that i sesect:

var tableArtConNom=sap.ui.core.Core().byId("artSnzNomDetail").byId("tableArtConNom");
        tableArtConNom.attachItemPress(this.handleRowPress);

        tableArtConNom.setModel(new sap.ui.model.json.JSONModel(p_oDataModel));

        tableArtConNom.destroyColumns();
        tableArtConNom.removeAllColumns();

        console.log(tableArtConNom.getColumns());
        for(var i=0; i<tableArtConNom.getModel().getProperty("/cols").length; i++){
            tableArtConNom.addColumn(new sap.m.Column("colonna"+i, { header: new sap.m.Label({ text: tableArtConNom.getModel().getProperty("/cols")[i] })}));
        }


        tableArtConNom.destroyItems();
        tableArtConNom.removeAllItems();
        tableArtConNom.bindAggregation("items", "/items", new sap.m.ColumnListItem({
            cells: tableArtConNom.getModel().getProperty("/cols").map(function (colname) {
                return new sap.m.Label({ text: "{" + colname + "}" });
            }),
            type:"Navigation"
        }));


        if(this.byId("idCodNomDog").getProperty("text")!=""){
            var buttonAccept=this.byId("idButtonAccept");
            buttonAccept.setProperty("visible", true);
        }else{
            var buttonAccept=this.byId("idButtonAccept");
            buttonAccept.setProperty("visible", false);
        }

        tableArtConNom.setModel(new sap.ui.model.json.JSONModel(p_oDataModelFull), "fullDataModel");
    },

To do it I capture the press event but I find only a number of item:

//IF CLICK ON ROW
    handleRowPress : function(evt){
        var selectedRowNum = evt.getSource().indexOfItem(evt.getParameter("listItem"));

        console.log(selectedRowNum);


    },

How can I print the other detailx (for example the content of a column?)

p.s. I can't parse the model of all my rows because in the table I filter the data and the index that i clicked not match by the position in the total model.

Upvotes: 0

Views: 2799

Answers (1)

Qualiture
Qualiture

Reputation: 4920

in your event handler, use :

var oItem = evt.getParameter("listItem").getBindingContext().getObject();
//NB: if using standard sap.ui.table.Table, use: 
//var oItem = evt.getSource().getBindingContext().getObject(); 
console.log(oItem); //prints the JSON for your selected table row

Upvotes: 2

Related Questions