easyUI在可编辑的datagrid中计算两列的值

在这个教程中你将学习如何包含一个运算的列在可编辑的datagrid中,一个运算列通常包含一些运算值从一个或多个其他列.


查看Demo

首先,创建一个可编辑的datagrid,这就是我们创建的一些可编辑列,'listprice','amount' 和'unitcost' 列定义为numberbox 编辑类型,运算列是 'unitcost'字段,

将是 listprice 乘以 amount列的结果.

  1. <table id="tt" style="width:600px;height:auto"   
  2.         title="Editable DataGrid with Calculated Column" iconCls="icon-edit" singleSelect="true"   
  3.         idField="itemid" url="data/datagrid_data.json">   
  4.     <thead>   
  5.         <tr>   
  6.             <th field="itemid" width="80">Item ID</th>   
  7.             <th field="listprice" width="80" align="right" editor="{type:'numberbox',options:{precision:1}}">List Price</th>   
  8.             <th field="amount" width="80" align="right" editor="{type:'numberbox',options:{precision:0}}">Amount</th>   
  9.             <th field="unitcost" width="80" align="right" editor="numberbox">Unit Cost</th>   
  10.             <th field="attr1" width="150" editor="text">Attribute</th>   
  11.             <th field="status" width="60" align="center" editor="{type:'checkbox',options:{on:'P',off:''}}">Status</th>   
  12.         </tr>   
  13.     </thead>   
  14. </table>   
<table id="tt" style="width:600px;height:auto"  
        title="Editable DataGrid with Calculated Column" iconCls="icon-edit" singleSelect="true"  
        idField="itemid" url="data/datagrid_data.json">  
    <thead>  
        <tr>  
            <th field="itemid" width="80">Item ID</th>  
            <th field="listprice" width="80" align="right" editor="{type:'numberbox',options:{precision:1}}">List Price</th>  
            <th field="amount" width="80" align="right" editor="{type:'numberbox',options:{precision:0}}">Amount</th>  
            <th field="unitcost" width="80" align="right" editor="numberbox">Unit Cost</th>  
            <th field="attr1" width="150" editor="text">Attribute</th>  
            <th field="status" width="60" align="center" editor="{type:'checkbox',options:{on:'P',off:''}}">Status</th>  
        </tr>  
    </thead>  
</table>  
当用户点击一行的时候,我们开始一个编辑动作.

[javascript] view plain copy print ?
  1. var lastIndex;   
  2. $('#tt').datagrid({   
  3.     onClickRow:function(rowIndex){   
  4.         if (lastIndex != rowIndex){   
  5.             $('#tt').datagrid('endEdit', lastIndex);   
  6.             $('#tt').datagrid('beginEdit', rowIndex);   
  7.             setEditing(rowIndex);   
  8.         }   
  9.         lastIndex = rowIndex;   
  10.     }   
  11. });   
var lastIndex;  
$('#tt').datagrid({  
    onClickRow:function(rowIndex){  
        if (lastIndex != rowIndex){  
            $('#tt').datagrid('endEdit', lastIndex);  
            $('#tt').datagrid('beginEdit', rowIndex);  
            setEditing(rowIndex);  
        }  
        lastIndex = rowIndex;  
    }  
});  
创建运算关系在一些列之间,我们应该得到 editors和绑定一些事件到他们上面.

[javascript] view plain copy print ?
  1. function setEditing(rowIndex){   
  2.     var editors = $('#tt').datagrid('getEditors', rowIndex);   
  3.     var priceEditor = editors[0];   
  4.     var amountEditor = editors[1];   
  5.     var costEditor = editors[2];   
  6.     priceEditor.target.bind('change', function(){   
  7.         calculate();   
  8.     });   
  9.     amountEditor.target.bind('change', function(){   
  10.         calculate();   
  11.     });   
  12.     function calculate(){   
  13.         var cost = priceEditor.target.val() * amountEditor.target.val();   
  14.         $(costEditor.target).numberbox('setValue',cost);   
  15.     }   
  16. }   
function setEditing(rowIndex){  
    var editors = $('#tt').datagrid('getEditors', rowIndex);  
    var priceEditor = editors[0];  
    var amountEditor = editors[1];  
    var costEditor = editors[2];  
    priceEditor.target.bind('change', function(){  
        calculate();  
    });  
    amountEditor.target.bind('change', function(){  
        calculate();  
    });  
    function calculate(){  
        var cost = priceEditor.target.val() * amountEditor.target.val();  
        $(costEditor.target).numberbox('setValue',cost);  
    }  
}  

下载 EasyUI 示例代码:
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值