jqgrid设置单元格不可编辑但是可以点击
时间: 2023-08-18 13:06:18 浏览: 84
可以通过设置单元格的 `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 样式来处理点击事件。
相关问题
jqgrid设置单元格回车后不跳转到下一个可编辑单元格
您可以在 `beforeSelectRow` 事件中阻止单元格的跳转行为。在事件处理程序中,您可以检查单元格是否可编辑,如果是,则返回 false,否则返回 true。以下是示例代码:
```javascript
beforeSelectRow: function(rowid, e) {
var $td = $(e.target).closest('td');
if ($td.hasClass('editable')) {
return false;
}
return true;
}
```
在这个示例中,我们假设可编辑的单元格都有一个 `editable` 类。如果单元格被点击并且包含 `editable` 类,则返回 false 阻止跳转行为,否则返回 true 允许跳转。
jqgrid其它单元格值为空时,此单元格不可编辑
可以通过设置`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`属性来判断。