Как я могу получить количество нажатых строк?

#sapui5

#sapui5

Вопрос:

Я создаю эту таблицу:

 tableResult.bindAggregation("items", "/items", new sap.m.ColumnListItem({
            cells: tableResult.getModel().getProperty("/cols").map(function (colname) {
                return new sap.m.Label({ text: "{"   colname   "}" });
            }),
            type:"Navigation",
            press:"handleRowPress"
        }));
        tableResult.setProperty("visible",true);
  

В функции handleRowPress , как я могу получить количество нажатых строк (первая, вторая, … n-я)?

Комментарии:

1. Вы уже проверили sap.m.Table метод indexOfItem() method (который заимствован из class sap.m.ListBase )? sapui5.hana.ondemand.com/sdk/#docs/api/symbols /…

2. Извините, я переписываю свою проблему: у меня есть функция handleRowPress : function(evt){ evt....... } handleRowPress, как я могу удалить количество выбранных элементов из «evt»?

Ответ №1:

Лучшим решением, предоставляемым UI5, было бы :

 handleRowPress : function(oEvent){
    var selectedRowNum = oEvent.getSource().indexOfItem(oEvent.getParameter("listItem"));
    console.log(selectedRowNum);
}
  

ПРИМЕЧАНИЕ: извлечение индекса из сгенерированного идентификатора, как правило, является плохой идеей, особенно при рассмотрении сортировки / фильтрации и т.д. 😉

Комментарии:

1. хорошо, это работает, но почему каждый раз, когда я нажимаю на элемент, у меня возникает эта ошибка? Uncaught TypeError: undefined is not a function sap-ui-core.js:122

2. Я понятия не имею, не глядя на ваш код… взгляните на этот рабочий пример: jsbin.com/vikoc/1/edit?js , консоль, вывод

Ответ №2:

Я нахожу решение!

 handleRowPress : function(evt){
        var path=evt.getParameter("listItem");
        var sId=path.sId;
        var selectedRowNum = sId.substr(sId.lastIndexOf("-")   1);
        console.log(selectedRowNum);

    }