目标
一个datagrid表格含多个列(field1,field2....),默认filed2不可编辑,但当某个条件(以字段filed1为空为例)时字段field2可编辑,且不影响其他列的编辑状态。
思路
设置列filed2的编辑器(例如:editor:'text'),点击行事件时触发判定,若不可编辑,关闭该列编辑权限。
//表格初始化
$('#tb').datagrid({
iconCls: 'icon-list',
title: 'title',
loadMsg: 'loading...',
height: 300,
singleSelect: true,
autoSave: true,
rownumbers: true,
queryParams: {},
columns: [
[
{
field: 'ck',
checkbox: true
},
{
field: 'field1',
title: 'title1',
width: 100
},
{
field: 'field2',
title: 'title2',
width: 150,
editor: 'text'
},
{
field: 'field3',
title: 'title3',
width: 150
},
{
field: 'field4',
title: 'title4',
width: 150
},
{
field: 'field5',
title: 'title5',
width: 150,
editor: 'text'
}
]
],
onClickRow: function (index, row) {
onClickRow(index);
}
});
//设置点击行事件
function onClickRow(index) {
if(!canEdit(index)){
//启用行编辑
$('#tb').datagrid('selectRow', index).datagrid('beginEdit', index);
//选择编辑对象
var module = $('#tb').datagrid('getEditor', {index: index, field:'material_name'}).target;
//关闭对象编辑功能
module.textbox({disabled: true});
}
}
//条件判断:field1为空时返回true
function canEdit(index){
var rows = $('#tb').datagrid('getRows');
if(rows[index]['field1'].trim() == ''){
return true;
}else{
return false;
}
}