繁体   English   中英

将行值绑定到odata模型SAP UI5

[英]Binding row value to odata model SAP UI5

我有一个包含2列的表格-用户可以在其中输入要返回的值,而另一列是一个复选框。 如果用户在项目行中输入一个值,则将复选框选中。 如果值大于0,则仅选中该复选框。 我的问题是下面的代码,如果我在第三行输入一个值,则会选中该复选框,但即使是第一行的复选框也被选中。 我认为问题出在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);
            }

        },

这可能是处理表项的非常复杂的方式。

这是您应该如何使用bindingContexts的方法。

在表(列表)的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"); } 

让我知道这是否有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM