使用cell edit mode in jqGrid时,默认行为是在单元格被点击或者如果该单元格被选中并且按下回车键时在单元格中进入编辑模式。jqGrid:用双击代替单击进入单元格编辑模式
有没有办法改变这种行为,以便一次点击不会将其置于编辑模式,但双击会做?回车时进入编辑模式很好。
使用cell edit mode in jqGrid时,默认行为是在单元格被点击或者如果该单元格被选中并且按下回车键时在单元格中进入编辑模式。jqGrid:用双击代替单击进入单元格编辑模式
有没有办法改变这种行为,以便一次点击不会将其置于编辑模式,但双击会做?回车时进入编辑模式很好。
直接地,它不受单元格编辑模式的支持,但在我看来,您可以像内联编辑一样自己实现它(例如,参见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
。
另一种方法是使用双击进行内联编辑而不是单元编辑。
首先让我感谢您阅读您的回复我能够提出这个解决方案。我需要一些特定的细胞编辑行为。我需要能够通过点击只选择一行。没有多重选择。我需要通过双击激活的单元格编辑。如果点击了所选行以外的行,我需要能够取消编辑。我还需要能够限制用户输入。我最初的谷歌搜索把我带到这里,当我偶然发现你发布的其他项目时,我刚刚放弃了希望。
这是我想出的解决方案。大部分来自你以前的答案。我做了一些改变。所以这个功劳大部分归功于你,但我想在这里发布它来帮助别人。这是我第一次发布解决方案,所以我希望它是明确的和有帮助的。
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);
}
嗨@Oleg,如果我设置cellEdit:false,那么像editCell这些单元格编辑方法不起作用。所以如果你想要单元格编辑,但双击(而不是行编辑)启用,那么我想这似乎不可能。 – rsmoorthy 2011-01-30 17:56:16
@rsmoorthy:你说得对。双击单元格编辑的用法并不那么容易。无论是必须编写更多的代码,还是使用内联编辑,而不是单元格编辑。 – Oleg 2011-01-30 19:38:04