前段时间遇到的一个问题,因为主键列不能让客户编辑,但是新增的时候需要可以填写,不知道有没有小伙伴跟我遇到同样的问题,这里给出我个人的解决方案:
可编辑的列需要设置editor属性,有关editor的Type设置为datetimebox请参考我的另一篇:
例如:
width : '120',
title : tArray[0].title,
field : 'id.'+tArray[0].field,//动态field,使用id.即取id下的属性,如有需求请参考另一篇博文.
readonly:true,
hidden:tArray[0].hidden,//动态配置是否显示
editor : {
type : 'numberbox',
options : {
precision : 3,
required:true,
disabled:true//将编辑禁用
}
},
formatter : function(value, row) {//需要对数据做处理则在此处编写返回规则
return value;
}
以上已将列设为不可编辑,但是新增的时候需要编辑,我们使用如下的方式,在调用append的时候将disabled设置为false,新增完成后列会继续变成不可编辑
var ed = grid.datagrid('getEditor', {
index : editIndex,
field : 'id.v0'
});
window.setTimeout(function () {//当type为datetimebox时需要延迟设置,其余类型无需设置定时器
$(ed.target).numberbox({disabled:false});//numberbox为editor对应的type
}, 20);
经过如上操作就大功告成了.