jQuery MiniUI

 找回密码
 立即注册
查看: 5975|回复: 13
打印 上一主题 下一主题

onDrawSummaryCell循环赋值问题 [复制链接]

Rank: 2

跳转到指定楼层
楼主
发表于 2017-8-17 09:29:57 |只看该作者 |倒序浏览
我想实现的效果是,行与行之间数值相加的结果赋值到指定行中
问题在图中,还请各位帮忙看看,感谢了~



附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 2

沙发
发表于 2017-8-17 09:51:13 |只看该作者
问题找到了,原来是字符串的问题,转成字符串就好了,xxx.toString()

Rank: 8Rank: 8

板凳
发表于 2017-8-17 10:17:08 |只看该作者
jinjisong 发表于 2017-8-17 09:51
问题找到了,原来是字符串的问题,转成字符串就好了,xxx.toString()

1楼的问题里看不出你的处理代码,这里问题最好提供一点代码来分析。

Rank: 2

地板
发表于 2017-8-17 11:00:59 |只看该作者
dforce 发表于 2017-8-17 10:17
1楼的问题里看不出你的处理代码,这里问题最好提供一点代码来分析。
  1. function onDrawSummaryCell (e) {
  2.             var record = e.record;
  3.             var result = e.result;
  4.             var grid = e.sender;
  5.             var field = e.field, value = e.value;
  6.             var rows = e.data;
  7.             if (e.field == "cus") {
  8.                 var total = 0;
  9.                 for (var i = 0, l = rows.length; i < l; i++) {
  10.                     var row = rows[i];
  11.                     var t = row.cus;
  12.             //这段是找出了指定两行数据
  13.                     if (row.ruleid == "sfppt") {
  14.                         var top = row.cus;
  15.                     }
  16.                     if (row.ruleid == "sfppb") {
  17.                         var bottom = row.cus;
  18.                     }
  19.                     var ratio = parseFloat(bottom)+parseFloat(top);
  20.             //下面是我想将上面两个行数据进行相加,然后更新到指定行中的数据,但是下面的出了问题,数据可以更新,但是前段没有显示,只能点击才能看到
  21.                     if (row.ruleid == "sfrpb") {
  22.                         row.cus = ratio.toString();
  23.                         row.scc = row.cus;
  24.                         row.scc_display = row.cus;
  25.                         row._state = "modified";
  26.                         row.text = ratio.toString();
  27.                         var row = grid.getSelected();
  28.                         grid.updateRow(row, {
  29.                             manager: data.id,
  30.                             manager_name: data.name
  31.                         });
  32.                     }
  33.                     console.log(row)
  34.                 }
  35.             }
  36.         }
复制代码

Rank: 2

5#
发表于 2017-8-17 11:02:11 |只看该作者
dforce 发表于 2017-8-17 10:17
1楼的问题里看不出你的处理代码,这里问题最好提供一点代码来分析。

刚刚我以为是字符串转换问题,但不是。。。。我现在用了grid.updateRow,不知道能不能实现

Rank: 1

6#
发表于 2017-8-17 11:12:27 |只看该作者
jinjisong 发表于 2017-8-17 11:02
刚刚我以为是字符串转换问题,但不是。。。。我现在用了grid.updateRow,不知道能不能实现 ...

if (row.ruleid == "sfppt") {
                        var top = row.cus;
                    }
                    if (row.ruleid == "sfppb") {
                        var bottom = row.cus;
                    }
                    var ratio = parseFloat(bottom)+parseFloat(top);
这样能获取top 、bottom ?它们在if里定义,外面取不到吧!

Rank: 8Rank: 8

7#
发表于 2017-8-17 11:16:41 |只看该作者
jinjisong 发表于 2017-8-17 11:02
刚刚我以为是字符串转换问题,但不是。。。。我现在用了grid.updateRow,不知道能不能实现 ...

为什么要在这里处理
我建议在ondrawcell事件里绘制
grid.on("drawcell",function(e){
    var record=e.record;
    var field=e.field;
    if(field=="cus"){
        if(record.ruleid=="sfrp"){
               var top=grid.findRow(function(row){
                         if(row.ruleid=="sfpt") return true;
                }).cus;
                 var bottom=grid.findRow(function(row){
                         if(row.ruleid=="sfppb") return true;
                }).cus;
                var ratio = parseFloat(bottom)+parseFloat(top);
                e.cellHtml=ratio ;
                e.record.cus=   ratio ;
        }
    }
})

Rank: 2

8#
发表于 2017-8-17 11:17:04 |只看该作者
qsw 发表于 2017-8-17 11:12
if (row.ruleid == "sfppt") {
                        var top = row.cus;
                    }

我是通过for循环出来指定的那两条数据,然后相加, 在通过循环,插入多指定的行中

Rank: 1

9#
发表于 2017-8-17 11:19:00 |只看该作者
qsw 发表于 2017-8-17 11:12
if (row.ruleid == "sfppt") {
                        var top = row.cus;
                    }

还有onDrawSummaryCell方法里好像不能用grid.updateRow,会报错

Rank: 2

10#
发表于 2017-8-17 12:56:54 |只看该作者
dforce 发表于 2017-8-17 11:16
为什么要在这里处理
我建议在ondrawcell事件里绘制
grid.on("drawcell",function(e){

好精简的语法,感谢了。
不过这样的话,不能够联动的写入在sfppb栏位里

Archiver|普加软件

GMT+8, 2024-9-30 12:23 , Processed in 1.053046 second(s), 10 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部