odata - 将行值绑定到 odata 模型 SAP UI5
问题描述
我有一个包含 2 列的表 - 用户可以在其中输入要返回的值,而另一列是复选框。如果用户在项目行中输入一个值,我会选中该复选框。如果值大于 0,则仅选中复选框。我的问题是下面的代码,如果我在第三行输入一个值,则该复选框被选中,但即使第一行的复选框也被选中。我认为问题出在 stmt:tableModel.setProperty("/ItemSet/results/0/ReturnItemFlag", "X"); 因为我给“0”第一行也得到了价值。如何指向正确的结果编号。 控制器.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。
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");
}
让我知道这是否有帮助!
推荐阅读
- unit-testing - 无法在 webpack.config.js 中加载 png 和 gif 图像
- amazon-web-services - s3 - 使用 CLI 公开目录
- haskell - 使用 Haskell 将代理对写入文件
- python - 安装 python-snappy 的问题
- jquery - 使用 jquery 在链接项中添加插入符号
- jquery - 如何在 Codeiginiter 中实现无限 ajax 滚动分页
- python - Pyparsing setParseAction 不会将字符串转换为 int
- java - URL 资源不会获取图片 url
- laravel - Laravel 两个不同的中间件身份验证仅来自 auth 中间件
- python - python中的多线程而不使用扩展线程类