部分扩展功能总结

EasyUI中datagrid的行编辑模式中,找到特定的Editor,并为其添加事件

function editrow(index) {    

if (rowedit == 0) {        

$(‘#ZCEditList‘).datagrid(‘beginEdit‘, index);        

rowedit = 1;

        var editors = $(‘#ZCEditList‘).datagrid(‘getEditors‘, index);            

  var TonsEditor = editors[3];        

var HorsepowerEditor = editors[4];           

var StandardEditor = editors[10];         

TonsEditor.target.bind(‘blur‘, function () {            

HorsepowerEditor.target.val(‘‘);            

var sum = TonsEditor.target.val() * 10;                    

  StandardEditor.target.val(sum);

        });        

    } }
       //keyCtr 扩展方法 下上键实现选择
        $.extend($.fn.datagrid.methods, {
            keyCtr : function (jq) {
                return jq.each(function () {
                    var grid = $(this);
                    grid.datagrid(‘getPanel‘).panel(‘panel‘).attr(‘tabindex‘, 1).bind(‘keydown‘, function (e) {
                        switch (e.keyCode) {
                        case 38: // up
                            var selected = grid.datagrid(‘getSelected‘);
                            if (selected) {
                                var index = grid.datagrid(‘getRowIndex‘, selected);
                                grid.datagrid(‘selectRow‘, index - 1);
                            } else {
                                var rows = grid.datagrid(‘getRows‘);
                                grid.datagrid(‘selectRow‘, rows.length - 1);
                            }
                            break;
                        case 40: // down
                            var selected = grid.datagrid(‘getSelected‘);
                            if (selected) {
                                var index = grid.datagrid(‘getRowIndex‘, selected);
                                grid.datagrid(‘selectRow‘, index + 1);
                            } else {
                                grid.datagrid(‘selectRow‘, 0);
                            }
                            break;
                        }
                    });
                });
            }
        });
//实现统计功能$.extend($.fn.datagrid.methods, {
    statistics: function (jq) {
        var opt=$(jq).datagrid(‘options‘).columns;
        var rows = $(jq).datagrid("getRows");

        var footer = new Array();
        footer[‘sum‘] = "";
        footer[‘avg‘] = "";
        footer[‘max‘] = "";
        footer[‘min‘] = "";

        for(var i=0; i<opt[0].length; i++){
            if(opt[0][i].sum){
                footer[‘sum‘] = footer[‘sum‘] + sum(opt[0][i].field)+ ‘,‘;
            }
            if(opt[0][i].avg){
                footer[‘avg‘] = footer[‘avg‘] + avg(opt[0][i].field)+ ‘,‘;
            }
            if(opt[0][i].max){
                footer[‘max‘] = footer[‘max‘] + max(opt[0][i].field)+ ‘,‘;
            }
            if(opt[0][i].min){
                footer[‘min‘] = footer[‘min‘] + min(opt[0][i].field)+ ‘,‘;
            }
        }

        var footerObj = new Array();

        if(footer[‘sum‘] != ""){
            var tmp = ‘{‘ + footer[‘sum‘].substring(0,footer[‘sum‘].length - 1) + "}";
            var obj = eval(‘(‘ + tmp + ‘)‘);
            if(obj[opt[0][0].field] == undefined){
                footer[‘sum‘] += ‘"‘ + opt[0][0].field + ‘":"<b>当页合计:</b>"‘;
                obj = eval(‘({‘ + footer[‘sum‘] + ‘})‘);
            }else{
                obj[opt[0][0].field] = "<b>当页合计:</b>" + obj[opt[0][0].field];
            }
            footerObj.push(obj);
        }

        if(footer[‘avg‘] != ""){
            var tmp = ‘{‘ + footer[‘avg‘].substring(0,footer[‘avg‘].length - 1) + "}";
            var obj = eval(‘(‘ + tmp + ‘)‘);
            if(obj[opt[0][0].field] == undefined){
                footer[‘avg‘] += ‘"‘ + opt[0][0].field + ‘":"<b>当页均值:</b>"‘;
                obj = eval(‘({‘ + footer[‘avg‘] + ‘})‘);
            }else{
                obj[opt[0][0].field] = "<b>当页均值:</b>" + obj[opt[0][0].field];
            }
            footerObj.push(obj);
        }

        if(footer[‘max‘] != ""){
            var tmp = ‘{‘ + footer[‘max‘].substring(0,footer[‘max‘].length - 1) + "}";
            var obj = eval(‘(‘ + tmp + ‘)‘);

            if(obj[opt[0][0].field] == undefined){
                footer[‘max‘] += ‘"‘ + opt[0][0].field + ‘":"<b>当页最大值:</b>"‘;
                obj = eval(‘({‘ + footer[‘max‘] + ‘})‘);
            }else{
                obj[opt[0][0].field] = "<b>当页最大值:</b>" + obj[opt[0][0].field];
            }
            footerObj.push(obj);
        }

        if(footer[‘min‘] != ""){
            var tmp = ‘{‘ + footer[‘min‘].substring(0,footer[‘min‘].length - 1) + "}";
            var obj = eval(‘(‘ + tmp + ‘)‘);

            if(obj[opt[0][0].field] == undefined){
                footer[‘min‘] += ‘"‘ + opt[0][0].field + ‘":"<b>当页最小值:</b>"‘;
                obj = eval(‘({‘ + footer[‘min‘] + ‘})‘);
            }else{
                obj[opt[0][0].field] = "<b>当页最小值:</b>" + obj[opt[0][0].field];
            }
            footerObj.push(obj);
        }

        if(footerObj.length > 0){
            $(jq).datagrid(‘reloadFooter‘,footerObj);
        }

        function sum(filed){
            var sumNum = 0;
            for(var i=0;i<rows.length;i++){
                sumNum += Number(rows[i][filed]);
            }
            return ‘"‘ + filed + ‘":"‘ + sumNum.toFixed(2) +‘"‘;
        };

        function avg(filed){
            var sumNum = 0;
            for(var i=0;i<rows.length;i++){
                sumNum += Number(rows[i][filed]);
            }
            return ‘"‘ + filed + ‘":"‘+ (sumNum/rows.length).toFixed(2) +‘"‘;
        }

        function max(filed){
            var max = 0;
            for(var i=0;i<rows.length;i++){
                if(i==0){
                    max = Number(rows[i][filed]);
                }else{
                    max = Math.max(max,Number(rows[i][filed]));
                }
            }
            return ‘"‘ + filed + ‘":"‘+ max +‘"‘;
        }

        function min(filed){
            var min = 0;
            for(var i=0;i<rows.length;i++){
                if(i==0){
                    min = Number(rows[i][filed]);
                }else{
                    min = Math.min(min,Number(rows[i][filed]));
                }
            }
            return ‘"‘ + filed + ‘":"‘+ min +‘"‘;
        }
    }
});

用法 :在字段中加入 sum:true;

http://www.oschina.net/code/snippet_659525_20039
时间: 2024-10-14 21:46:05

部分扩展功能总结的相关文章

OPENCART之兼容多种浏览器的加入收藏夹扩展功能插件(CROSS-BROWSER BOOKMAR

OPENCART之兼容多种浏览器的加入收藏夹扩展功能插件(CROSS-BROWSER BOOKMARK) 由于安全原因,谷歌浏览器chrome不允许使用javascript代码加入收藏夹,本插件在谷歌浏览器浏览网站时,给出按Ctrl + D来收藏您的网址. 特色: 1. 适用于多种浏览器版本: IE5+/Win, Firefox, Netscape 6+, Opera 7+, Safari, Google Chrome for Windows, Konqueror 3, IE5/Mac, iCa

转:如何学习SQL(第四部分:DBMS扩展功能与SQL高级话题)

转自:http://blog.163.com/[email protected]/blog/static/285720652010950102575/ 9. DBMS提供的扩展功能 掌握了基本的关系模型原理和DBMS的数据类型,还需要对DBMS提供的扩展功能有所了解,才能充分运用DBMS进行数据库开发. 9.1. 控制流 SQL是说明式语言,但DBMS面对实际开发的需求,通常在SQL方言中都提供了过程式的扩展,包括(以T-SQL为例):1. 变量定义和赋值[code=sql] DECLARE @

扩展功能==继承?

学过面向对象的我们都知道,通过继承:能够重用和扩展已经被彻底测试过的代码,且无需修改之.但就像策略模式中所讲到的,继承会禁锢类的方法.那么如果要扩展功能,我们还是必须使用继承吗? 答案当然是否定的,因为设计模式中为我们提供了一个很好的模式--装饰模式:动态地将责任附加到对象上.这里所谓的动态可以简单理解为灵活.那么不使用继承,又要如何帮助我们达到目的呢?下面一起来看. 先来看一个例子,我们去咖啡店买咖啡,光咖啡类型就有不同的选择:综合.深焙.低咖啡因.浓缩.但喝咖啡可没这么简单,它还需要加入相应

【23】用户自定义扩展功能实现

上一个教程中,我们已经实现了公共配置项的实现,这一节中我们来实现用户自定义扩展功能.我们都知道,尽管框架中已经定义许多函数和各种类,但有时候它并不能完全满足我们的需求,所以我们需要引入自己定义的类和函数. 1.在框架配置文件config.php中加入配置 //载入Common/Lib目录下的文件,可以载入多个 'AUTO_LOAD_FILE'=>array(), 2.在Application类文件中定义一个私有的静态方法,用来C函数读取用户自定义的配置文件,并循环载入,如下: private s

对list代理扩展功能

package 动态代理扩展List; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.ArrayList; import java.util.List; public class ListPro { public static void main(String[] args) { final

Android(java)学习笔记204:自定义SmartImageView(继承自ImageView,扩展功能为自动获取网络路径图片)

1.有时候Android系统配置的UI控件,不能满足我们的需求,Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高. 2.下面我们是自定义一个SmartImageView继承自ImageView,扩展了ImageView的功能:     步骤: • 新建一个SmartImageView类,让继承自ImageView(放置特定的包下): • 实现SmartImageView类下的构造方法,最好全部实现,这个不容易出

PCB 3D PCB 后续改进与扩展功能一些想法

再次感受到WelGl实现3D效果的震撼, 一.目前功能: Gerber与钻孔 解析 并转为3D实景图,用户360度操控 二.后续改进扩展功能: 1.增加ODB++解析 2. 3D 尺寸标注(外形尺寸,孔径,线宽) 3. 实现兰胶,碳油 覆盖 4.内层芯板展示 5.盲埋孔结构3D 展示 5.刚柔结构3D展示 6.线路高度与阻焊高度 叠加展示 三.应用技术与JS库: 1.计算机图形技术,采用  three.js库(3D建模,图形渲染,材料,灯光,投影等等))     2.性能监控库 Stats.js

关于构造函数的扩展写法与类的扩展功能写法区别

- 构造函数的扩展功能写法如下:   class A():   pass   class B(A):   def __init__(self,name,adr):   print("B")   print(name)   print("adr")   class C(B):   def __init__(self,name,adr):#先初始化父类中的参数   # C中想扩展B的构造函数后添加功能   #方法1:   #B.__init__(self,name)  

c#实现wc基本功能和扩展功能

c#实现wc基本功能和扩展功能 github:链接 一.项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数.单词数和行数. 实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他扩展功能,并能够快速地处理多个文件. 基本功能列表: wc.exe -c file.c //返回文件 file.c 的字符数 wc.exe -w file.c /

小白&amp;python实现wc基本功能&amp;扩展功能

项目github地址:https://github.com/linlixina/wc 项目实现功能: 基本功能列表 wordCounter.exe -c file.c //返回文件 file.c 的字符数 wordCounter.exe -w file.c //返回文件 file.c 的词的数目 wordCounter.exe -l file.c //返回文件 file.c 的行数 扩展功能 wordCounter.exe -s file //递归处理目录下符合条件的文件. wordCounte