jqgrid其它单元格值为空时,此单元格不可编辑
时间: 2023-08-17 12:06:12 浏览: 48
可以通过设置`beforeEditCell`事件来限制某些单元格只有在其它单元格有值时才能编辑。具体来说,你可以在该事件中获取其它单元格的值,根据其它单元格的值来判断当前单元格是否可编辑。以下是示例代码:
```javascript
beforeEditCell: function (rowid, cellname, value, iRow, iCol) {
var otherVal = $('#grid').jqGrid('getCell', rowid, 'otherCol'); // 获取其它单元格的值
if (otherVal == '') {
return false; // 如果其它单元格的值为空,则当前单元格不可编辑
} else {
return true; // 否则,当前单元格可编辑
}
}
```
上述代码中,`beforeEditCell`事件中获取了`otherCol`列的值,如果`otherCol`列的值为空,则返回`false`,表示当前单元格不可编辑;否则,返回`true`,表示当前单元格可编辑。你可以根据实际需求修改判断条件。
需要注意的是,`beforeEditCell`事件在每次单元格编辑之前都会触发,如果你的需求是某些单元格在其它单元格有值时才能编辑,那么你需要在事件中判断当前单元格是否是你需要限制的单元格,如果不是,则直接返回`true`。如果你需要限制的单元格比较多,可以根据单元格的`name`或`index`属性来判断。
相关问题
jqgrid整行数据为空时,该行单元格不可编辑
可以通过设置`beforeEditCell`事件来实现整行数据为空时,该行单元格不可编辑的功能。具体实现方法如下:
1. 在`beforeEditCell`事件中,判断该行数据是否为空,如果为空则返回`false`,否则返回`true`。
2. 在`beforeEditCell`事件中,判断该单元格是否可编辑,如果不可编辑则返回`false`,否则返回`true`。
示例代码如下:
```
beforeEditCell: function(rowid, cellname, value, iRow, iCol) {
var rowData = $(this).jqGrid('getRowData', rowid);
if (rowData[cellname] == '') {
return false; // 如果整行数据为空,则该行单元格不可编辑
} else {
var colModel = $(this).jqGrid('getColProp', cellname);
if (colModel.editable) {
return true; // 如果该单元格可编辑,则返回true
} else {
return false; // 如果该单元格不可编辑,则返回false
}
}
}
```
jqgrid设置行数据为空时,该行单元格不可编辑,有数据的行单元格可以编辑
可以通过以下的方式在 jqGrid 中设置行数据为空时,该行单元格不可编辑,有数据的行单元格可以编辑:
1. 在 jqGrid 的 colModel 中设置每一列的 editable 属性,若该列的数据为空,则将该属性设置为 false,否则设置为 true。
2. 在 jqGrid 的 loadComplete 事件中遍历每一行,若该行数据为空,则将该行的所有单元格设为不可编辑状态。
以下是具体的代码实现:
```javascript
loadComplete: function(data) {
var rows = data.rows;
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
if ($.isEmptyObject(row)) {
// 设置为空行的所有单元格不可编辑
$(this).jqGrid('setRowData', i + 1, '', {'editable': false});
}
}
},
colModel: [
{name:'name', index:'name', width:100, editable: true},
{name:'age', index:'age', width:50, editable: true},
{name:'email', index:'email', width:150, editable: true},
...
]
```
在上述代码中,loadComplete 事件中的代码会在 jqGrid 加载完成后执行,遍历每一行数据,如果该行数据为空,则将该行的所有单元格的 editable 属性设置为 false,这样该行单元格就不可编辑了。而 colModel 中的每一列的 editable 属性则根据该列的数据是否为空来设置,如果该列数据为空,则该列的单元格不可编辑,否则可编辑。