最近使用edatagrid,但是edatagrid不支持beforeEdit事件.自己添加一个,代码如下
在原edatagrid.js中的$.fn.edatagrid.methods对象中,插入一个自定义的"onBeforeEdit"
onBeforeEdit : function(jq,index){
var dg = $(jq[0]);
var opts = $.data(jq[0], 'edatagrid').options;
var rows = dg.datagrid('getRows');
if(opts.beforeEdit){//如果指定了onBeforeEdit事件就执行
var rt = opts.beforeEdit.call(jq[0], index, rows[index]);
if(rt!==undefined){//如果事件有返回值
return rt;
}else{
return true;
}
}else{
return true;
}
}
修改editRow事件,在流程中插入onBeforeEdit,把原editRow代码中这一部分
dg.datagrid('endEdit', editIndex);
dg.datagrid('beginEdit', index);
opts.editIndex = index;
var rows = dg.datagrid('getRows');
opts.onEdit.call(this, index, rows[index]);
修改为
var beforeEdit = dg.edatagrid('onBeforeEdit',this,index);//执行onBeforeEdit事件
//如果返回结果为true就继续原来的流程,否则就跳过
if(beforeEdit){
dg.datagrid('endEdit', editIndex);
dg.datagrid('beginEdit', index);
opts.editIndex = index;
var rows = dg.datagrid('getRows');
opts.onEdit.call(this, index, rows[index]);
}
修改后的js文件