在单元格编辑中,是否有任何方法可以在编辑单元格时更改单元格的编辑类型(如果满足某些条件)?
Supposse我有一个colModel,它有一个字段“Description”,默认情况下将被视为输入。当我单击该单元格中的编辑时,输入将显示当前单元格值。现在,如果满足某些条件,我希望当用户点击该单元格进行编辑时,而不是输入选择会出现。
我尝试过使用setColProp并更改edittype和editoptions,但要么我没有在正确的位置(我在beforeCellEdit事件中做过),要么就是这样。< / p>
感谢。
UPD :
我尝试使用您提议的策略,但在调用setColProp
方法后,我的单元格仍然显示输入:
var originalEditCell = $.fn.jqGrid.editCell;
$.jgrid.extend({
editCell: function (iRow, iCol, isStartEditing) {
if (iCol === 4 && classEditMode) {
$(this).jqGrid('setColProp', "ColName4", { edittype: "text" });
var cell = $(this).find('tr:eq(' + iRow + ')').find('td[aria-describedby="gridFix_Description"]');
cell.find('select').remove();
cell.append($('<input />').attr('id', iRow + '_Description')
.attr('name', 'Description')
.attr('role', 'textbox')
.width('98%')
.text(""));
}
return originalEditCell.call(this, iRow, iCol, isStartEditing);
}
});
网格仍会生成一个选择。知道为什么吗?
由于
UPD2
抱歉,我忘了在setColProp方法中为colname包含正确的变量。我在帖子中纠正了这个问题,以便记录如果有人需要它我是如何解决这个问题的。
感谢。
答案 0 :(得分:1)
您可以使用onCellSelect
回调或beforeSelectRow
来管理在调用 editCell
之前动态更改某些属性的情况。问题只是在键盘导航的情况下它无济于事。
作为一种安全的解决方法,但有点棘手,我建议使用jqGrid方法editCell
的“子类化”(请参阅here,here等)。相应的代码片段将是以下
var originalEditCell = $.fn.jqGrid.editCell;
$.jgrid.extend({
editCell: function (iRow, iCol, isStartEditing) {
// here you can do some actions before editing
return originalEditCell.call(this, (iRow, iCol, isStartEditing);
}
});