日期:2014-05-16  浏览次数:20313 次

遇到给ExtJS页面加一个合计行的问题
 遇到给ExtJS页面加一个合计行的问题,在后台代码里添加太麻烦了,这里给大家一个简单的方法。


    //合计函数Begin  
    function GridSum(grid)
   {
            var sum1 = 0; //存储第一个列的合计值
             var sum2 = 0; //存储第二个列的合计值
                                      //...有几个列需要合计就声明几个变量                                 
             grid.store.each(function(record){              //函数grid.store.each(record))相当于一个for循环,遍历整个record
              sum1 += Number(record.data.money1); //把money1列下面的所有值进行加和运算
              sum2 += Number(record.data.money2); //把money2列下面的所有值进行加和运算
          });      
       var p = new Ext.data.Record(
         {     
                  money1:sum1,  //把money1列与合计后得到的值对应起来
                  money2:sum2   //把money2列与合计后得到的值对应起来   
         }
         );                    
                grid.store.insert(0, p);// 插入到当前页的第一行 
               //grid.store.insert(grid.getStore().getCount(), p);  //插入到当前页的最后一行,函数 grid.getStore().getCount()用来获得当前页的记录行数
  }
   //合计函数End


             // 在Store的load事件被触发后,调用合计函数 http://www.52mvc.com  asp.net
             gridui.getStore().on('load', function() {


             GridSum(gridui.getGrid());//调用合计函数,gridui是你页面中定义的gridui变量名,这里作为参数传递给GridSum()函数


      });
             注: 1.money1,money2是你页面中"钱一"列和"钱二"列各自对应的"dataIndex"属性值。


                   2.Store的load事件在"刚进入页面"时,"点击下一页"时,"点击查询"时,都会被触发。


                   3.该方法是对当前页的值进行合计,并不统计所有页的总合计值,点击下一页后会自动统计下页的合计值并显示。


                   感谢同事张继业的帮助。