【玩转GridView】之Gridview对应行数值自动汇总

来源:互联网 发布:蚂蚁分类信息5.8 源码 编辑:程序博客网 时间:2024/04/30 15:24

前言:

    这块的需求在上一篇博客(【玩转GridView】之让GridView动起来(一)】)中已提到,是嵌入gridview中文本框之间的一个求和。之前的做法是全部写在了后台代码中,后来测试提了bug—“嵌入的复制按钮需要双击才生效”,一直没明白是怎么导致的,后来经大神指点,调试发现是两个后台方法在回发的时候冲突,才出现这样的问题.

    之后因开发新功能,这块bug留了两周左右,最近新功能开发完了,就和同事请教了一下,将这些实时变化的东西全放在了JS中.

问题:

    随调整额和定额的变化,总额要随之实时变化.

    首先遇到的问题是,如何在JS中获取嵌入Gridview中文本框的值?如何将对应一行的数据相加并赋值,还保证是同一行?

思路:

   先获取点击那行的rowIndex,根据传的参数能获取当前文本框的value值;之后就若是修改调整额的话,需要获取定额值,再求两者之和,赋值给对应的调整总额.获取定额值时,先获取gridview的ID值,再用

          getElementsByTagName("input")[index].value
获取值. 赋值用相同的方式反着来就OK.

   直接来看看代码就明白了.

代码:

        //调整额改变时,总额实时变化        function Count(result) {             //获取行号            var index = result.parentNode.parentNode.rowIndex;            //获取修改的整额值            var adjvalue = result.value;                         //判断如果文本框为空时,直接返回不计算            if(isNaN(adjvalue) == true || adjvalue ==''){                return;            }            //获取定额值            if (index == 1) {                var adjust = document.getElementById('<%= grvDetail.ClientID %>').getElementsByTagName("input")[0].value;            } else {                var adjust = document.getElementById('<%= grvDetail.ClientID %>').getElementsByTagName("input")[7 * (index - 1)].value;            }            var adjAllCost = parseFloat(adjvalue) + parseFloat(adjust);            if (index == 1) {                document.getElementById('<%= grvDetail.ClientID %>').getElementsByTagName("input")[index + 2].value = adjAllCost;            } else {                document.getElementById('<%= grvDetail.ClientID %>').getElementsByTagName("input")[index + (6 * index - 4)].value = adjAllCost;            }        }

效果图:

    利用复制按钮时,自动汇总数据,是在后台方法中实现的(PS:详见博客【玩转GridView】之让GridView动起来(一)】);当调整额改变时,总额也随之变化。

     

总结:

    当我们再去修改bug时,也就相当于是对功能的再次思考和认识.去看看是业务逻辑出问题了,还是代码写的不够严谨. 不管是什么方面,改Bug也是一种学习.

  

0 0
原创粉丝点击