У меня есть таблица с 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);
}
},