实现jqGrid单元格编辑完后点击提交按钮一次性提交
2015-06-15 15:52
423 查看
常见的是jqgrid单元格编辑完后就触发与服务端的交互,我在开发的时候碰到下面的需求(如下图):
在点击确定按钮前要结束最后一个单元格编辑状态,如上图,否则getRowData方法获取的表格数据包含文本编辑框的html代码,如下图
且必须用saveCell函数结束文本编辑状态,(不能用restoreCell函数,因为此函数只能获取编辑前的数据)写法如下:
$("#businessplanmag_add_list").jqGrid("saveCell",businessplanmag_iRow,businessplanmag_iCol);
businessplanmag_iRow,businessplanmag_iCol分别表示单元格的水平和垂直坐标,这是2个全局变量,在下面赋值
beforeEditCell:function(rowid,cellname,value,iRow,iCol){
businessplanmag_iRow=iRow;
businessplanmag_iCol=iCol;
},
完整代码如下:
//添加修改_公用
function businessplanmag_table_show(jsondata){
$("#businessplanmag_add_list").jqGrid("GridUnload");
$("#businessplanmag_add_list").jqGrid({
datastr:jsondata,
datatype:"jsonstring",
width:600,
height: "100%",
colNames:['ID','省区id','省id','省区','计划成交额','线上成交额','线下成交额'],
colModel:[
{name:'p_id',index:'p_id', width:80,key:true,align:'center',hidden:true},
{name:'areaid',index:'areaid', width:50,align:'center',hidden:true},
{name:'proid',index:'proid', width:50,align:'center',hidden:true},
{name:'area_name',index:'area_name', width:150,align:'center'},
{name:'business_volume_plan',index:'business_volume_plan', width:150,align:'right',editable:true,editrules:{custom:true, custom_func:function(value, colname){
if(rule.price.test(value)){ return [true];}else{ return [false,"请输入数字,可保留2位小数!"]; }
}}},
{name:'business_volume_online',index:'business_volume_online', width:150,align:'right',editable:true,editrules:{custom:true, custom_func:function(value, colname){
if(rule.price.test(value)){ return [true];}else{ return [false,"请输入数字,可保留2位小数!"]; }
}}},
{name:'business_volume_offline',index:'business_volume_offline', width:150,align:'right'}
],
jsonReader : {
repeatitems: false,
id:"p_id",
},
cellEdit:true,
cellsubmit:"clientArray",
beforeEditCell:function(rowid,cellname,value,iRow,iCol){
businessplanmag_iRow=iRow;
businessplanmag_iCol=iCol;
},
afterSaveCell:function(id,name,val,iRow,iCol){
if(name=="business_volume_plan"){
var business_volume_offline=val-$("#businessplanmag_add_list").jqGrid("getCell",id,"business_volume_online");
}else{
var business_volume_offline=$("#businessplanmag_add_list").jqGrid("getCell",id,"business_volume_plan")-val;
}
if(business_volume_offline<0){
$("#businessplanmag_add_list").jqGrid("restoreCell",iRow,iCol);
$.longhz.alert("计划成交额不能小于线上成交额!");
return;
}
$("#businessplanmag_add_list").jqGrid("setCell",id,"business_volume_offline",business_volume_offline.toFixed(2));
},
caption:""
});
}
需要注意以下几点:
1、 cellsubmit的值必须是"clientArray";
2、afterSaveCell函数在单元格编辑完后触发,实现功能如下图
3、此函数只用于呈现表格,表格数据是通过参数jsondata传入,这样做的好处是可动态更改表格的呈现数据。
4、这里用到了jqgrid编辑自带的验证方法
editrules:{custom:true, custom_func:function(value, colname){
if(rule.price.test(value)){ return [true];}else{ return [false,"请输入数字,可保留2位小数!"]; }
}}
在点击确定按钮前要结束最后一个单元格编辑状态,如上图,否则getRowData方法获取的表格数据包含文本编辑框的html代码,如下图
且必须用saveCell函数结束文本编辑状态,(不能用restoreCell函数,因为此函数只能获取编辑前的数据)写法如下:
$("#businessplanmag_add_list").jqGrid("saveCell",businessplanmag_iRow,businessplanmag_iCol);
businessplanmag_iRow,businessplanmag_iCol分别表示单元格的水平和垂直坐标,这是2个全局变量,在下面赋值
beforeEditCell:function(rowid,cellname,value,iRow,iCol){
businessplanmag_iRow=iRow;
businessplanmag_iCol=iCol;
},
完整代码如下:
//添加修改_公用
function businessplanmag_table_show(jsondata){
$("#businessplanmag_add_list").jqGrid("GridUnload");
$("#businessplanmag_add_list").jqGrid({
datastr:jsondata,
datatype:"jsonstring",
width:600,
height: "100%",
colNames:['ID','省区id','省id','省区','计划成交额','线上成交额','线下成交额'],
colModel:[
{name:'p_id',index:'p_id', width:80,key:true,align:'center',hidden:true},
{name:'areaid',index:'areaid', width:50,align:'center',hidden:true},
{name:'proid',index:'proid', width:50,align:'center',hidden:true},
{name:'area_name',index:'area_name', width:150,align:'center'},
{name:'business_volume_plan',index:'business_volume_plan', width:150,align:'right',editable:true,editrules:{custom:true, custom_func:function(value, colname){
if(rule.price.test(value)){ return [true];}else{ return [false,"请输入数字,可保留2位小数!"]; }
}}},
{name:'business_volume_online',index:'business_volume_online', width:150,align:'right',editable:true,editrules:{custom:true, custom_func:function(value, colname){
if(rule.price.test(value)){ return [true];}else{ return [false,"请输入数字,可保留2位小数!"]; }
}}},
{name:'business_volume_offline',index:'business_volume_offline', width:150,align:'right'}
],
jsonReader : {
repeatitems: false,
id:"p_id",
},
cellEdit:true,
cellsubmit:"clientArray",
beforeEditCell:function(rowid,cellname,value,iRow,iCol){
businessplanmag_iRow=iRow;
businessplanmag_iCol=iCol;
},
afterSaveCell:function(id,name,val,iRow,iCol){
if(name=="business_volume_plan"){
var business_volume_offline=val-$("#businessplanmag_add_list").jqGrid("getCell",id,"business_volume_online");
}else{
var business_volume_offline=$("#businessplanmag_add_list").jqGrid("getCell",id,"business_volume_plan")-val;
}
if(business_volume_offline<0){
$("#businessplanmag_add_list").jqGrid("restoreCell",iRow,iCol);
$.longhz.alert("计划成交额不能小于线上成交额!");
return;
}
$("#businessplanmag_add_list").jqGrid("setCell",id,"business_volume_offline",business_volume_offline.toFixed(2));
},
caption:""
});
}
需要注意以下几点:
1、 cellsubmit的值必须是"clientArray";
2、afterSaveCell函数在单元格编辑完后触发,实现功能如下图
3、此函数只用于呈现表格,表格数据是通过参数jsondata传入,这样做的好处是可动态更改表格的呈现数据。
4、这里用到了jqgrid编辑自带的验证方法
editrules:{custom:true, custom_func:function(value, colname){
if(rule.price.test(value)){ return [true];}else{ return [false,"请输入数字,可保留2位小数!"]; }
}}
相关文章推荐
- 异步流程控制:7 行代码学会 co 模块
- [译] React 入门
- jqgrid 简单学习笔记
- 前端必备神器 Snap.svg 弹动效果
- Jqgrid表格随窗口大小改变而改变的简单实例
- MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB数据
- 3ff8 javascript 获取Flash下载进度兼容IE, FireFox,Chrome浏览器
- jqGrid 操作一些总结
- EasyUI的渣性能(二)
- Pongo网页版JavaScript源代码及设计思路
- 拟物设计和Angular的实现 - Material Design (持续更新)
- JQGrid
- 一个前端与后端分离的架构实例
- css笔试题整理——seo优化
- PS网站切图
- 读懂正则表达式就这么简单
- 网页设计师的职业发展
- 前端与页面开发的水有多深