又是项目需求。对带有复选框的GridPanel,需要有方法可以获得所有当前勾选行的某一列的数据之和。
Ext本身有一个GridSummary.js的扩展。不过我大概看了一下(没仔细研究),没针对checkBox勾选行的统计功能。因而对Ext.grid.GridPanel做了无情的扩展,代码如下:
Ext.grid.HsGridPanel = Ext.extend(Ext.grid.GridPanel,{
......
/**
* 返回已经勾选所有行指定列的值的sum
* @author weic
* @param sumColumnName 要累加的列
* @param fastCount [true/false,空]true是快速计算,牺牲一点小数的准确度,默认(不写这个属性的话)是false
* @param fixLength 限制返回值的小数位数
*/
getSelectionSum:function(sumColumnName, fastCount, fixLength){
function floatAdd(arg1,arg2){
var r1,r2,m;
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2))
return (arg1*m+arg2*m)/m
}
var selectedLines = this.getSelectionModel().getSelections();
if(selectedLines.length > 0){
var sum = 0;
if(fastCount == undefined || !fastCount){
for(var i=0; i<selectedLines.length; i++){
sum = floatAdd(sum,selectedLines[i].get(sumColumnName));
}
}
else if(fastCount){
for(var i=0; i<selectedLines.length; i++){
sum = sum + selectedLines[i].get(sumColumnName);
}
}
}
if(fixLength){
//alert("限制小数位" + fixLength);
var tempSum = sum;
try{ sum = sum.toFixed(fixLength) } catch(e){ sum = tempSum}
}
//alert(sum);
return sum;
}
......
}
使用的时候,GridPanel的实例如果是grid, 就调用 grid.getSelectionSum('列名');可以获得这个列的勾选值的总和。
当给了这个方法第2个参数的时候 grid.getSelectionSum('列名',true);就调用快速计算,在大数据量的时候速度比较高,但会损失高位小数的精度。设置为false就不会。
第3个参数(也可以不写),指定小数的保留位数。
截图如下:
1.快速计算------grid.getSelectionSum('price',true);
2. 精确计算------grid.getSelectionSum('price');
3. 保留一位小数------grid.getSelectionSum('price',true,1);
- 大小: 45 KB
- 大小: 60.3 KB
- 大小: 75.5 KB
分享到:
相关推荐
Ext GridPanel 中实现加链接操作 Ext GridPanel 中实现加链接操作 Ext GridPanel 中实现加链接操作
将页面的GridPanel中的数据导出到Excel中 测试Ext:版本2.2.1 支持GridSummary,GroupSummary和GroupHeaderPlugin插件 使用方法: 1)把三个JS文件引入到页面中 2)调用例句: var data2Excel = new Ext.icss.Data2...
EXT GridPanel获取某一单元格的值
NULL 博文链接:https://shenhaiquan.iteye.com/blog/1474328
主要介绍了Extjs gridpanel 中的checkbox(复选框)根据某行的条件不能选中的解决方法,需要的朋友可以参考下
Ext的gridpanel控件二次加载时丢失解决方案
对于GridPanel中拖动选中行排序的实现,网上有不少ExtJs实现的例子,但是没有找到使用Ext.net实现的,正好最近有个需求要使用,干脆来写一个。 DEMO功能说明: 1、拖动GridPanel选中行到新位置排序。 2、在拖动结束...
Ext.grid.GridPanel 删除线 放到example文件夹下运行
使用ext.net代码动态创建gridpanel后任意显示在各种窗口中
EXT实例GridPanel. 实现简单的。
Ext.grid.GridPanel属性祥解, 表格部门的详解,通俗易懂,适合初学人员,以及想对GridPanel有个精析认识的Web开发人员
ext.net gridpanel 弹出窗
NULL 博文链接:https://wv1124.iteye.com/blog/741559
Ext GridPanel加载完数据后进行操作,比如load数据之后选定某些行数据,下面有个示例,需要的朋友可以参考下
该例子实现了ext的gridpanel多层表头+分组+小计以及与Java后台交互的全代码。还有自适应浏览器大小的功能包括导出excel,里面有注释,可能注释不全。分别为group.jsp,totals.jsp页面。
ExtJs GridPanel双击事件获得双击的行,双击行可以选中前面的checkbox,并获得行号
tapestry4.02中封装ext的GridPanel组件
Ext.grid.ColumnModel显示不正常
Ext修改GridPanel数据和字体颜色等,不是单指EditGridPanel 首先获取选中的行(当然也可以获取单元格): 代码如下: var selectedRow = grid.getSelectionModel().getSelected(); 修改设置: 代码如下: selectedRow....