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

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

查看Demo

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

将是 listprice 乘以 amount列的结果.

<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>

<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>

当用户点击一行的时候,我们开始一个编辑动作.

var lastIndex;

$(‘#tt‘).datagrid({

onClickRow:function(rowIndex){

if (lastIndex != rowIndex){

$(‘#tt‘).datagrid(‘endEdit‘, lastIndex);

$(‘#tt‘).datagrid(‘beginEdit‘, rowIndex);

setEditing(rowIndex);

}

lastIndex = rowIndex;

}

});

var lastIndex;

$(‘#tt‘).datagrid({

onClickRow:function(rowIndex){

if (lastIndex != rowIndex){

$(‘#tt‘).datagrid(‘endEdit‘, lastIndex);

$(‘#tt‘).datagrid(‘beginEdit‘, rowIndex);

setEditing(rowIndex);

}

lastIndex = rowIndex;

}

});

创建运算关系在一些列之间,我们应该得到editors和绑定一些事件到他们上面.

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);

}

}

 

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);

}

}

时间: 2024-10-31 00:38:30

easyUI在可编辑的datagrid中计算两列的值的相关文章

【EasyUI】——可编辑的DataGrid

利用EasyUI做的可编辑的DataGrid大致分为两种类型.一种是启动行编辑的,一种是启动单元格编辑.且不说启动编辑的效果怎样.单启动编辑这一块它就封装的非常厉害.好些功能没有办法去更改.如今项目的一个需求就是在页面上使得DataGrid能够实现这种效果,单击选中行,双击可编辑单元格,失去焦点则保存数据.在研究了整整两天之后,大致能实现.可是差失去焦点保存数据.这篇文章就简单理解一下.可启动单元格编辑的DataGrid是怎样实现的. 首先得加入EasyUI的引用: <span style=&quo

mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法

mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法: 语法: TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2) 说明: 返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差.其结果的单位由interval 参数给出.interval 的法定值同TIMESTAMPADD()函数说明中所列出的相同. mysql> SELECT TIMESTAMPDIFF(MONTH,'200

C/C++中计算两个时间相差的天数

在系统中经常用到time()函数获取系统时间,也就是通常所说的日历时间,这个时间是从1970年1月1日0时开始到现在的秒数. 问:已有日历时间t1和t2(假设t1>t2),如何计算他们之间相差的天数. 答: day = (t1+time_zone*60*60)/time_of_day - (t2+time_zone*60*60)/time_of_day 其中time_zone表示时区间隔,比如说北京时间相比于标准时间就需要加8小时,可以参考下图.time_of_day为一天的秒数,等于24*60

db2和oracle sql 语句中计算两个时间差的语法

db2 sql语句中计算两个日期相差的语法 结束日期为:2015-10-10  11:30:00 开始日期为:2015-09-09  10:40:00 (1)timestampdiff(8,char(结束时间-开始时间) )(加时分秒计算,会舍去零数)值为744小时 (2)(days(结束时间)-days(开始时间))*24 +hour(结束时间)-hour(开始时间) (不加时分秒计算)值为745小时 (3)Days(结束日期)-days(开始日期)的值为31天 (4)Day(结束日期)-da

JavaScript实现获取table中某一列的值

JavaScript实现获取table中某一列的值 1.实现源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> &

JavaScript获取table中某一列的值的方法

1.实现源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C

数据库中批量导入数据,有两列的值需要从其他表中查出来,我现在没有思路,求解惑

我现在批量往数据库里导正式数据(sql insert),但是数据中有三列分别是岗位,办事处,大区,给的数据中只给了岗位的值,办事处的值可以通过岗位值在岗位表查到,大区的值可以通过办事处的值在办事处表里查到.现在我已经把其他数据都导进去了,只剩办事处和大区没有值,我该如何批量更新这两列的值啊 导入的数据的表: 岗位表: 办事处表: 本人sql不是很好,希望sql大神能给出来解惑一下,拜谢~ 数据库中批量导入数据,有两列的值需要从其他表中查出来,我现在没有思路,求解惑 >> mysql 这个答案描

对数据表中某2列的值对调

原文:对数据表中某2列的值对调 如标题所言,需要把2列的数据进行对调,列1的值存入列2,把列2的值存储列1中去. 如何实现,2种方法: 第1种,对列名进行修改,把name1改为name2,把name2改为name1即可: sp_rename 'Q3.name1',temp_name1,'column' GO sp_rename 'Q3.name2',temp_name2,'column' GO sp_rename 'Q3.temp_name1',name2,'column' GO sp_rena

EasyUI获取DataGrid中某一列的所有值

有一需求为计算[成绩]列中所有数据之和 function count() { var rows = $('#dg'').datagrid('getRows')//获取当前页的数据行 var total = 0; for (var i = 0; i < rows.length; i++) { total += rows[i]['SCORE']; //获取指定列 } alert(total); } 作者:itmyhome 版权声明:本文为博主原创文章,未经博主允许不得转载.