2011-03-21 80 views
0

在jqGrid for update/edit工作,我必須使主鍵列可編輯。jqGrid:使主鍵列可編輯而添加新記錄,而不是更新

但是,它們只能在添加新記錄時纔可編輯,而不能在更新舊記錄時編輯。

有沒有辦法解決這個問題?我想這一定是非常普遍的問題,但我沒有找到任何解決方法。

在此先感謝您的幫助。

回答

1

我希望另一個我的answer(有另外兩個舊答案的鏈接)將解決您的問題。

如果使用服務器基礎數據類型('json'和'xml'),服務器將始終生成ids,並且您不需要使id列可編輯。

+0

因此多數民衆贊成一種解決方法不是實際的解決問題的。就像在db中有自動生成的ID列一樣。但要求我必須除了主鍵列,我想禁用其他列也基於業務請求進行編輯。我們可以說人們應對變化,但他的出生日期不會。所以一旦進入系統我想確保出生日期被禁用編輯。 (只是一個例子) – harish 2011-03-22 05:32:33

+1

@harish:如果你使用表單編輯,你可以在'beforeShowForm'內的編輯對話框中隱藏'id'和'birthdate'列(就像[here](http://stackoverflow.com/questions)/3405029/jqgrid-disable-form-fields-when-editing/3405961#3405961)將被禁用列'Name')。在這種方式下,您可以禁用編輯的列。在'beforeShowForm'中,您可以檢查當前選定行並根據「業務請求」的更復雜標準禁用它。如果你使用內聯編輯,你可以在調用editRow之前設置'$(「#list」).jqGrid('getColProp','id')。disable = false',然後改回它。 – Oleg 2011-03-22 07:25:59

0

如果您遵循Inline editing的原則,則可以在方法onCellSelectonSelectRow上輸入時指示要編輯的列。

要做到這一點,你只需要在屬性更改編輯爲所需的值:

$(this).getColProp('ColumnName').editable = false || true;