Привязка значения строки к модели данных SAP UI5 - PullRequest
0 голосов
/ 03 июля 2018

У меня есть таблица с 2 столбцами - один, где пользователь может ввести возвращаемое значение, а другой столбец - флажок. Если пользователь вводит значение в строку элемента, я устанавливаю флажок. Если значение больше 0, тогда устанавливается только флажок. Моя проблема с кодом ниже: если я введу значение в 3-й строке, этот флажок будет установлен, но наряду с флажком даже в первой строке. Я думаю, что проблема в stmt: tableModel.setProperty ("/ ItemSet / results / 0 / ReturnItemFlag", "X"); Поскольку я даю «0», первая строка также получает значение. Как указать правильный номер результата. Controller.js

qtyChange: function(oEvent) {

            var a = oEvent.getSource();
            var input = a.getValue()
            var row = oEvent.getSource().getParent().getParent();
            var index = row.getIndex();

            var oTable = vc.getView().byId("takeStockHistoryDetailTable");
            var selectedRowPath = oTable.getContextByIndex(index).getPath();
            var tableModel = vc.getView().getModel(TAKE_STOCK_ORDER_DETAIL);
            var selectedPart = tableModel.getObject(selectedRowPath);
            var QtyOnHand = selectedPart.QtyOnHand;
            var UnitP = selectedPart.UnitPrice;

            var f = parseInt(input);
            var g = parseInt(QtyOnHand);
            var h = parseFloat(UnitP);

            if (f > g) {

                sap.m.MessageToast.show("Return quantity is more than available quantity");
                a.setValue("");

            } else if (f === 0 || input === "") {
                selectedPart.ReturnItemFlag = 'Y';
                tableModel.setProperty("/ItemSet/results/0/ReturnItemFlag", "Y");

            } else {

                selectedPart.ReturnItemFlag = 'X';
                selectedPart.QtyToReturn = input;

                var sub = input * h;
                // debugger;
                var sub1 = sub.toString();
                selectedPart.Subtotal = sub1;

                tableModel.setProperty("/ItemSet/results/0/ReturnItemFlag", "X");
                tableModel.setProperty("/ItemSet/results/0/Subtotal", sub1);
            }

        },

1 Ответ

0 голосов
/ 04 июля 2018

Возможно, это очень сложный способ работы с элементами таблицы.

Вот как вы должны работать с bindingContexts.

on listItemPress Событие таблицы (списка)

qtyChange: function(oEvent){
    
    var oColumnListItem = oEvent.getSource().getParent();
    var sPath = oColumnListItem.getBindingContextPath("yourModelName");

OR 
    var sPath = oColumnListItem.getBindingContext("yourModelName").getPath();

    var sReturnItemFlagPath = sPath + "/ReturnItemFlag";

    tableModel.setProperty(sReturnItemFlagPath,"newValue");

}

Дайте мне знать, если это поможет!

...