2011-03-21 77 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;