计算sap.m.table行的选择/取消选择的值

2020-09-26 06:37发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我有一个表单,其中有一个字段-netValue,该字段后跟一个sap.m.table,其模式为:multiselect。

在表格中,我们有一列-totalPrice,现在选择任何行时,净值都应计算为:new netValue =以前的净值-所选行的总价格。

如果用户取消选择该行,则它应变为netValue =以前的净值+选定的行的总价。

用户还应该具有选择所有行并取消选择所有行的选项。

任何指针都会有所帮助。

谢谢

_vishal

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我有一个表单,其中有一个字段-netValue,该字段后跟一个sap.m.table,其模式为:multiselect。

在表格中,我们有一列-totalPrice,现在选择任何行时,净值都应计算为:new netValue =以前的净值-所选行的总价格。

如果用户取消选择该行,则它应变为netValue =以前的净值+选定的行的总价。

用户还应该具有选择所有行并取消选择所有行的选项。

任何指针都会有所帮助。

谢谢

_vishal

付费偷看设置
发送
5条回答
奄奄一息的小鱼
1楼 · 2020-09-26 07:00.采纳回答

Vishal,

我已经尝试过您的情况,以下代码片段可能会对您有所帮助

view1.view.xml

  
 
 <列>
  <文本text =" Product"/>  <文本text =" Supplier"/>  <文本text =" Price"/>  <文本text ="净价"/> 
 <项目>
 
 <单元格>
 
 
 
 
 
 

view1.controller.js

 onInit:function(){
 var oJsonModel = new JSONModel({
 " ProductCollection":[{
 " ProductId":" HT-1000",
 "名称":" Notebook Basic 15",
 " SupplierName":"非常好的屏幕",
 "价格":956
 },{
 " ProductId":" HT-1001",
 " SupplierName":"非常好的屏幕",
 "名称":" Notebook Basic 17",
 "价格":1249
 },{
 " ProductId":" HT-1002",
 " SupplierName":"非常好的屏幕",
 "名称":" Notebook Basic 18",
 "价格":1570
 },{
 " ProductId":" HT-1003",
 " SupplierName":"智能卡",
 "名称":" Notebook Basic 19",
 "价格":1650
 },{
 " ProductId":" HT-1007",
 " SupplierName":" Technocom",
 "名称":" ITelO Vault",
 "价格":299
 }]
 });
 this.getView()。setModel(oJsonModel," data");


 this.iNetValue = 1000;
 var oViewModel = new JSONModel({
 " netValue":this.iNetValue
 });
 this.getView()。setModel(oViewModel," viewData");
 },


 onSelect:function(oEvent){
 var oView = this.getView(),
 oJsonModel = oView.getModel(" data"),
 aListItems = oEvent.getSource()。getSelectedItems(),
 iNetValue = this.iNetValue;

      //循环浏览所选项目
 aListItems.forEach(function(listItem,index){
 var sPath = listItem.getBindingContextPath();
 iNetValue + = oJsonModel.getProperty(sPath).Price;
 });

 oView.getModel(" viewData")。setProperty("/img/netValue",iNetValue);
 }
 

此致

Vedaradhya。

风早神人
2楼-- · 2020-09-26 07:04

嗨,Vedaradhya,

谢谢,这个逻辑在稍作更改后就可以工作了:)

_vishal

嗨,

使用模式=" MultiSelect" selectionChange =" <您的事件名称>"。

 selectRow:function(oEvt){
    //检查是否全部选中
     if(oEvt.getSource()._ getSelectAllCheckbox()。getSelected()== true){
        //在模型上循环并添加所有字段
     }其他{
         if(oEvt.getParameter(" selected")== true){
             //获取绑定上下文和总价的行,然后从净价中减去
         }其他{
            //添加到网价
         }
     }
 } 
Alawn_Xu
4楼-- · 2020-09-26 06:54

嗨,

我已经在调试器中找到它。 我不确定请在 SapUI5 Demokit

clasier
5楼-- · 2020-09-26 06:55
中查看API参考。

您好Irfan,

在以下一种情况下,当用户使用标题行中的复选框取消选择所有行时,此方法不起作用。

工作正常1)当用户选择所有行时2)选择/取消选择单行。 示例代码如下:

 handleSelect:function(oEvent){
             var columnGrPrice = 0.00;
             var gPrice = 0.00;
             var newRemValue = 0.00;
             var initialRemValue = parseFloat(this.getView()。byId(" idRemainingVal")。getText());
            //从表格中获取选定的行数,例如,如果从5行中选择了3行
             var oTable = this.getView()。byId(" idItemTable");
             var oLength = oTable.getSelectedItems()。length;
            //如果仅选择/取消选择一行,则获取所选行的索引
             var selectedIndex = oEvent.getSource()._ oItemNavigation.getFocusedIndex();
            //检查是否全部选中
             如果(oEvent.getSource()._ getSelectAllCheckbox()。getSelected()== true){
                //在模型上循环并添加所有字段
                 for(var s = 0; s  

谢谢

_vishal

一周热门 更多>