2010-07-13 54 views

回答

2

直接地,它不受单元格编辑模式的支持,但在我看来,您可以像内联编辑一样自己实现它(例如,参见jqGrid - edit only certain rows for an editable column)。您不应该将jqGrid的cellEdit参数设置为true,而是直接使用单元编辑方法,如http://www.trirand.com/jqgridwiki/doku.php?id=wiki:cell_editing#methods中描述的editCell

另一种方法是使用双击进行内联编辑而不是单元编辑。

+0

嗨@Oleg,如果我设置cellEdit:false,那么像editCell这些单元格编辑方法不起作用。所以如果你想要单元格编辑,但双击(而不是行编辑)启用,那么我想这似乎不可能。 – rsmoorthy 2011-01-30 17:56:16

+0

@rsmoorthy:你说得对。双击单元格编辑的用法并不那么容易。无论是必须编写更多的代码,还是使用内联编辑,而不是单元格编辑。 – Oleg 2011-01-30 19:38:04

0

首先让我感谢您阅读您的回复我能够提出这个解决方案。我需要一些特定的细胞编辑行为。我需要能够通过点击只选择一行。没有多重选择。我需要通过双击激活的单元格编辑。如果点击了所选行以外的行,我需要能够取消编辑。我还需要能够限制用户输入。我最初的谷歌搜索把我带到这里,当我偶然发现你发布的其他项目时,我刚刚放弃了希望。

这是我想出的解决方案。大部分来自你以前的答案。我做了一些改变。所以这个功劳大部分归功于你,但我想在这里发布它来帮助别人。这是我第一次发布解决方案,所以我希望它是明确的和有帮助的。

edit.iCol。 edit.iRow和edit.rowID被存储,以便我们可以在编辑时取消。在这里使用你自己的变量来存储这些值。

 cellEdit: true, 
     cellsubmit: 'clientArray', 
     beforeSelectRow: function(rowid) { 
      if (edit.iRow != null && rowid !== edit.rowID) { 
       $('#list').jqGrid("restoreCell",edit.iRow, edit.iCol); 
       edit.iRow = edit.iCol = null; 
      } 
      $('#list').jqGrid('setSelection', rowid); 
     }, 

     afterSaveCell: function (rowid, name, val, iRow, iCol) {   
       alert("after"); 
     }, 
     beforeSaveCell: function (rowid, name, val, iRow, iCol) { 
      alert("before"); 
     }, 
     ondblClickRow: function (rowid, iRow,iCol) { 
      edit.iRow = iRow; 
      edit.iCol = iCol; 
      edit.rowID = rowid; 
      $("#list").editCell(iRow, iCol, true); 
     } 
相关问题