jqgrid其它单元格值为空时,此单元格不可编辑
时间: 2023-08-17 07:06:12 浏览: 100
可以通过设置`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设置行数据为空时,该行单元格不可编辑,有数据的行单元格可以编辑
可以通过以下的方式在 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 属性则根据该列的数据是否为空来设置,如果该列数据为空,则该列的单元格不可编辑,否则可编辑。
jqgrid设置单元格不可编辑但是可以点击
可以通过设置单元格的 `editable` 和 `clickable` 属性来实现单元格不可编辑但可以点击的效果。
首先,将单元格的 `editable` 属性设置为 `false`,这样单元格就不可编辑了。然后,将单元格的 `clickable` 属性设置为 `true`,这样就可以在单击单元格时触发相应的事件。
下面是一个示例代码片段:
```javascript
colModel: [
{
name: 'name',
index: 'name',
width: 150,
editable: false,
clickable: true,
formatter: function(cellvalue, options, rowObject) {
return '<span class="clickable-cell">' + cellvalue + '</span>';
}
}
]
```
在上面的代码中,我们设置了 `name` 列的单元格不可编辑但可以点击。通过 `formatter` 属性,我们将单元格的内容包装在一个带有 `clickable-cell` 类的 `span` 标签中,这样就可以用 CSS 样式来处理点击事件。
阅读全文