首先是自定义了一个方法uodateColumn更新列值  

     /**
*自定义的修改列值方法
*/
$.extend($.fn.datagrid.methods, {
updateColumn: function(datagrid,data) {
datagrid.each(function(){
//获取缓存中的配置数据
var gridObj=$.data(this,"datagrid");
var opts=gridObj.options;
//获取行数据
var row=opts.finder.getRow(this,data.index);
data.row=data.row||{};
var update=false;
//判断是否需要更新
for(var updateColumn in data.row){
if(data.row[updateColumn]!==row[updateColumn]){
update=true;
break;
}
}
if(update){
var tr=opts.finder.getTr(this,data.index);
var view=opts.view.renderRow.call(opts.view,this,["attr1"],true,data.index,data.row);
if(tr.hasClass("datagrid-row-editing")){
//找到所有需要更新值的列
tr.find('div').each(function(i){
if(data.row[$(this).parent().attr('field')]!=undefined){
if($(this).attr('class').indexOf('datagrid-editable')!=-1){
var ed=$.data(this,"datagrid.editor");
if(ed!=undefined){
ed.actions.setValue(ed.target,data.row[$(this).parent().attr('field')]);
}else{
$(this).html(data.row[$(this).attr('field')]);
}
}else{
$(this).html(data.row[$(this).attr('field')]);
$(this).addClass("datagrid-editable");
}
}
});
}
}
});
}
});

在这里,还有一个需要注意的时,我们将没在编辑状态下的列设值的同时添加了class:datagrid-editable;

所以在easyui.min.js中针对结束编辑的方法中会对该类进行扫描获取editor对象,但我们在这里是获取不到的。

所以在源码中我们加入了以下处理方法:

if(ed!=undefined){
var t=$(ed.target);
var _6eb=t.data("textbox")?t.textbox("textbox"):t;
_6eb.triggerHandler("blur");
var _6ec=ed.actions.getValue(ed.target);
if(row[_6ea]!=_6ec){
row[_6ea]=_6ec;
_6e8=true;
_6e9[_6ea]=_6ec;
}
}else{
$(this).removeClass("datagrid-editable");
var _6cv=$(this).html();
if(row[_6ea]!=_6cv){
row[_6ea]=_6cv;
_6e8=true;
_6e9[_6ea]=_6cv;
}
}

其实更明确的做法是将endEdit也重写了。这样就避免了懂源码。

在html页面中按照easyui的表格使用,声明表格:

<pre name="code" class="html">$('#demo').datagrid({
fitColumns: true,
iconCls: 'icon-edit',
singleSelect: true,
url: 'js/datagrid_data1.json',
method: 'get',
onClickRow: onClickRow,
onEndEdit: onEndEdit,
columns: [
[{
field: 'itemid',
title: 'Item ID',
width: 20,
align: 'center',
checkbox: true
}, {
field: 'productid',
title: 'productid',
width: 20,
sortable: true,
align: 'center'
}, {
field: 'listprice',
title: 'List Price',
width: 20,
align: 'center',
editor: {
type: 'numberbox',
options: {
precision: 2,
groupSeparator: ','
}
}
}, {
field: 'unitcost',
title: 'unitcost',
width: 20,
sortable: true,
editor: {
type: 'textbox'
}
}, {
field: 'attr1',
title: 'attr1',
width: 20,
sortable: true,
editor:{
type:'datebox'
}
}, {
field: 'status',
title: 'status',
width: 20,
sortable: true,
align: 'left',
editor:{
type:'combobox',
options:{
valueField:'id',
textField:'text',
data:[{id:1,text:'一号'},{id:2,text:'二号'}]
}
}
}]
]
});

//声明一些打开编辑的事件

var editIndex = undefined;

            function endEditing() {
if (editIndex == undefined) {
return true
}
if ($('#demo').datagrid('validateRow', editIndex)) {
$('#demo').datagrid('endEdit', editIndex);
editIndex = undefined;
return true;
} else {
return false;
}
} function onClickRow(index) {
if (editIndex != index) {
if (endEditing()) {
$('#demo').datagrid('selectRow', index).datagrid('beginEdit', index);
var ed = $('#demo').datagrid('getEditor', {
index: index,
field: 'listprice'
});
if (ed) {
ed.target.textbox({
inputEvents: $.extend({}, $.fn.textbox.defaults.inputEvents, {
keydown: function(e) {
if (e.keyCode == 13) {
var row = $('#demo').datagrid('getSelected');
$('#demo').datagrid('updateColumn',{index:index,row:{attr1:'2016-01-12',status:'1',unitcost:'33'}});
}
}
})
});
}
editIndex = index;
} else {
setTimeout(function() {
$('demo').datagrid('selectRow', editIndex);
}, 0);
}
}
}
function onEndEdit(index, row) {
console.log(row);
}

easyui 在编辑状态下,动态修改其他列值。的更多相关文章

  1. cxgrid 非编辑状态下复制当前列的值 真折腾人

    1.自带的CTRL +C 只能复制整行,不知是不是版本问题. 2.有分组这个代码就不行了 s:= G1DBView.DataController.Values[G1DBView.Controller. ...

  2. ListView在编辑状态下不能获取修改后的值,无法更新数据

    ListView在编辑状态下不能获取修改后的值,获取到的总是以前的值解决方法:在page_load事件里写: if(!IsPostBack) { ListViewBind(); } 原因:这涉及到as ...

  3. datagrid combobox事件更新编辑状态下的datagrid行

    请问如何从上图状态 点击下拉的combobox中值然后在不取消datagrid编辑状态下更新这一行另一列的数据,达到下图这样的效果: 非常感谢! 给你的combobox  绑定一个onSelect 事 ...

  4. iOS开发UI篇-tableView在编辑状态下的批量操作(多选)

    先看下效果图 直接上代码 #import "MyController.h" @interface MyController () { UIButton *button; } @pr ...

  5. ubuntu中vi在编辑状态下方向键不能用的解决

    ubuntu中vi在编辑状态下方向键不能用,还有回格键不能删除等,我们平时习惯的一些键都不能使用. 解决办法: 可以安装vim full版本,在full版本下键盘正常,安装好后同样使用vi命令. 安装 ...

  6. OSG立体模式下动态修改相机远近裁剪面的实现

    1. 非立体模式下动态修改相机远近裁剪面 class GLB_DLLCLASS_EXPORT CGlbGlobeClipHandler : public osg::NodeCallback    { ...

  7. 解决:WdatePicker新增状态下只能取比当前月份大的月份,编辑状态下只能取比当前input里指定月份的月份大的值

    onclick="WdatePicker({ dateFmt: 'yyyy-MM', autoPickDate: true, minDate: this.value==''?'%y-#{%M ...

  8. odoo14 编辑状态和非编辑状态下隐藏

    1 <div class="oe_edit_only"> 2 <a name="remove_group_id" type="obj ...

  9. 修改UIView的默认Layer后,修改View的值会动态修改Layer的值

    修改UIView的默认Layer后,修改View的值会动态修改Layer的值 效果图: 如上图所示,当我们修改了一个UIView的子类中的Layer内置类型时(如上图中我们将CALayer直接替换成了 ...

随机推荐

  1. 编译GDAL使用最新的HDF库配置文件

    HDF库最新版本中的动态库以及目录结构都发生了变化,导致按照之前的博客进行编译GDAL时,会出问题.使用HDF4版本为HDF4-4.2.10,HDF5的版本为HDF5-1.8.12.两个库的目录结构如 ...

  2. HashMap方法介绍

    1. Map的遍历方式 (1) for each map.entrySet() Map<String, String> map = new HashMap<String, Strin ...

  3. Sublime Text 3 使用MarkDown编写带预览的文本

    看到别人使用一个叫Markdown的标记语言来完成编码,心里就有点小激动,毕竟简短的几个符号,就可以写出如此精美的界面,实在是让人感到心旷神怡啊.于是我就在网上搜索了一些相关项的设置,于是便有了下面的 ...

  4. iOS中 断点下载详解 韩俊强的博客

    布局如下: 基本拖拉属性: #import "ViewController.h" #import "AFNetworking.h" @interface Vie ...

  5. Unity StrangeIoC HelloWorld

    unity有一个叫StrangeIoC的框架插件,这里写了一个使用StrangeIoC的HelloWorld,比他自带的demo更为简单,方便理解 1.插件下载,在Asset Store直接搜索Str ...

  6. VC2010工程依赖不再自动链接

    发现 VC2010 Express  设置了 Project Dependencies 之后并没有自动链接. 而在VC2008中工程依赖不仅影响构建顺序,也会自动链接依赖项. 具体说明见: http: ...

  7. python import自己编写的模块:import json和simplejson

    python import的模块都是库里面的,而自己的模块也可以添加 比如python的json处理,库里没有json文件,import json不行. 网上大部分人告诉你处理json用 dumps和 ...

  8. java中log的应用

    log的简单应用 备忘 加入jar包commons-logging-1.1.jar log4j.properties 如下(就放在src根目录底下 名字和位置都不要变) #OFF.FATAL.ERRO ...

  9. 苹果新的编程语言 Swift 语言进阶(十六)--泛型

    泛型允许你定义一个宽松.可重用的函数或者类型,使用泛型能够避免代码的重复,也能以更清楚和抽象的方式来表达程序的意图. 泛型是Swift语言提供的强大功能之一,Swift提供的许多标准库都使用了泛型来创 ...

  10. dos2unix(windows脚本文件放到unix下运行要注意)

    在windows下编写的shell脚本文件,直接放到linux下运行,是不行的. infiniDB的倒库脚本文件load.sh,将tbl文件导入infiniDB,怎么运行不成功,不建job.运来,是w ...