[英]jqGrid: Edit more than one cell using Cell Editing
我有個問題。 我正在為jqGrid使用單元格編輯。 我不想為內聯編輯更改它,因為我需要保持這種方式,只允許一次編輯一個單元格。
關鍵是我有一個字段,在編輯之后,需要強制其他單元格進行編輯。 因此,如果用戶將第一個單元格更改為某個值,則需要打開這些單元格進行編輯。
有什么辦法嗎? 我已經嘗試過使用.jqGrid('editCell',...),但是那樣的話我一次只能用一個單元格來做。 而且我不能要求下一個必須編輯的單元格來強制編輯第三個單元格,因為用戶可能想單獨編輯第二個單元格,這可能會導致這種行為。
有什么辦法嗎?
謝謝
UPD :
為了更清楚地說明這一點,我將舉一個例子。 假設您有一個表,列出了附近居民所擁有的汽車。 它具有4個單元:
ID-汽車公司-車型-年
其中ID是某些標識字段,CarCompany是制造汽車的公司的名稱,Model是模型的名稱,Year是年份的模型。
因此,例如,您有以下記錄:
0-福特-焦點-2010
1-凱迪拉克-Escalade-2004
2-蘭博基尼-暗黑破壞神-2012
車主可以更換汽車。 他們可以更改Year,而不應更改其他任何單元(因為他們將其汽車更改為當前汽車的較新版本),並且可以將同一年的另一模型更改為Model。 但是,如果他們要換另一家公司的汽車,則必須更新型號和年份(假設您必須更改年份)。 因此:
如果我了解正確的問題,則可以使用afterSaveCell
回調或其他一些更適合您的要求的代碼(請參閱此處 )。 您可以測試修改了哪一列,並顯式調用editCell
來建議編輯依賴的單元格。 可能您可以使用其他自定義驗證規則(請參閱此處 ),以確保用戶確實將從屬單元格修改為正確的值。
UPDATED : 該演示演示了如何在afterSaveCell
回調內部調用editCell
來實現所需的行為。 該演示代碼中最重要的部分將在下面找到:
var carCompanyEditingMode = false;
$("#list").jqGrid({
...
afterSaveCell: function (rowid, cellname, value, iRow, iCol) {
var $this = $(this), editedColName = this.p.colModel[iCol].name;
if (editedColName === "carCompany") {
setTimeout(function () {
$this.jqGrid("editCell", iRow, iCol + 1, true);
}, 50);
carCompanyEditingMode = true;
return;
}
if (carCompanyEditingMode && editedColName === "model") {
setTimeout(function () {
$this.jqGrid("editCell", iRow, iCol + 1, true);
}, 50);
return;
}
if (carCompanyEditingMode && editedColName === "year") {
carCompanyEditingMode = false;
}
},
beforeSelectRow: function () {
// don't allow editing of another row if
// the carCompanyEditingMode is true
return !carCompanyEditingMode;
},
afterRestoreCell: function (rowid, value, iRow, iCol) {
var $this = $(this);
if (carCompanyEditingMode) {
// continue editing of the same cell
setTimeout(function () {
$this.jqGrid("editCell", iRow, iCol, true);
}, 50);
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.