2012-12-18 49 views
2

在编辑单元格时,在编辑单元格时是否有任何方式更改单元格的编辑类型(如果满足某些条件)?在jqGrid中更改单元格的编辑类型

Supposse我有一个colModel,它有一个字段“Description”,默认情况下它将被视为一个输入。当我点击编辑该单元格时,输入将与当前单元格值一起显示。现在,如果满足某些条件,我希望当用户单击该单元格进行编辑时,将显示一个选择而不是输入。

我试过使用setColProp并更改edittype和editoptions,但是我没有在正确的位置(我在beforeCellEdit事件中做过),或者它不能以这种方式工作。

谢谢。

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的正确的变量。我在帖子中纠正了这个问题,以便记录我如何解决这个问题,如果有人需要它。

谢谢。

回答

1

您可以使用onCellSelect回调或beforeSelectRow管理一些性质editCell之前将被调用的动态变化的情况下。问题只在于它不会对键控导航有帮助。

作为一种安全的解决方法,但有点棘手,我可以建议使用jqGrid的方法editCell的“subclasing”(见herehere等)。相应的代码片段将如下

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); 
    } 
}); 
+0

检查更新。 – Heathcliff

相关问题