防止 jqGrid 使用 beforeCellEdit 事件进入编辑单元格
Prevent jqGrid from entering edit cell using beforeCellEdit event?
在CellEdit之前捕获事件时,是否可以以某种方式阻止单元格进入编辑模式?
beforeEditCell: function (rowid, cellname, value, irow, icol) {
if (cellname != 'aSpecificCol')
return;
var grid = $("#grid");
if (aCondition == "something")
grid.setColProp('aSpecificCol', { editable: false });
else
grid.setColProp('aSpecificCol', { editable: true });
}
事件将触发,但列属性的设置似乎不会更改编辑模式。
方法
beforeEditCell
将在编辑过程中调用。它的存在主要是为了在新创建的输入或选择元素中进行一些初始化。
模式下进行编辑,我建议您有时在单元格中设置"not-editable-cell"
类(例如在cellattr
或loadComplete
中),或者使用beforeSelectRow
返回某些单元格的false
。它beforeSelectRow
返回 false 单元格将不会编辑。
beforeSelectRow: function (rowid, e) {
var $td = $(e.target).closest("td"), iCol = $.jgrid.getCellIndex($td[0]);
if (/* test some rules here */) {
return false; // prevent selection and so the editing of the cell
}
}
是的,您需要找到另一种替代方法,因为beforeEditCell
只提供了一种在编辑单元格之前执行更多代码的方法。从grid.celledit.js
:
if ($.isFunction($t.p.beforeEditCell)) {
$t.p.beforeEditCell.call($t, $t.rows[iRow].id,nm,tmp,iRow,iCol);
}
但是,似乎您应该能够调用restoreCell
来阻止编辑模式:
恢复单元格
iRow, iCol
恢复索引列iCol中具有行索引iRow(不要与rowid混合)的单元格的编辑内容
例如:
beforeEditCell: function (rowid, cellname, value, irow, icol) {
var grid = $("#grid");
if (cellname != 'aSpecificCol') {
grid.jqGrid("restoreCell", irow, icol);
return;
}
如果这不起作用,您可以尝试将此代码添加到 afterEditCell
事件中,这可能是更合适的位置。
相关文章:
- ExtJS网格单元格编辑器,防止焦点松动问题
- 在 SlickGrid 中编辑后,根据不同列中的另一个单元格清除单元格
- dhtmlx添加新行并启动单元格编辑器
- ExtJS 4.1 - 编辑单元格时消失的选定内容(组合框编辑器)
- 如何更改编辑单元格上方单元格的背景颜色(Javascript、Google电子表格)
- KO网格无法保存编辑单元格中的数据-使用Plunker
- 使用jQuery日期选择器编辑单元格时出现AngularJS ngGrid问题
- 调用REST Service save()方法时,XPages Dojo Grid可编辑单元格不保存值
- 如何在后台网格中将特定的可编辑单元格设置为不可编辑
- 防止 jqGrid 使用 beforeCellEdit 事件进入编辑单元格
- Slickgrid不显示来自PHP的JSON数据,除非我编辑单元格
- 如何在GridX中始终编辑单元格
- Jquery dataTable可编辑单元格
- Javascript-遍历表行并编辑单元格样式
- Slickgrid-如何获取已编辑单元格的值
- jqGrid与IE11的问题-当用户从可编辑单元格中弹出选项卡时,第一个键输入忽略
- 无法在光滑网格中设置焦点和编辑单元格
- 在Handsontable中移动列后编辑单元格时,数据不正确
- dataTable可编辑单元格对双击事件没有响应
- 如何为只读SlickGrid单元格提供与可编辑单元格不同的背景