使用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