jqGrid:在添加新记录时使主键列可编辑,而不是在更新时

jqGrid:在添加新记录时使主键列可编辑,而不是在更新时,jqgrid,jqgrid-asp.net,Jqgrid,Jqgrid Asp.net,在jqGrid中,为了更新/编辑工作,我必须使主键列可编辑 但它们应该仅在添加新记录时可编辑,而在更新旧记录时不可编辑 有没有办法绕过这个问题?我想这一定是很常见的问题,但我没有找到任何解决办法 提前感谢您的帮助。我希望另一个my(链接到另外两个旧答案)将解决您的问题 如果您使用服务器基本数据类型(“json”和“xml”),服务器将始终生成id,您不必使id列可编辑。如果您遵循此原则,则可以在输入方法onCellSelect或oncetrow时指示要编辑哪些列 为此,只需将“可编辑”属性更改为

在jqGrid中,为了更新/编辑工作,我必须使主键列可编辑

但它们应该仅在添加新记录时可编辑,而在更新旧记录时不可编辑

有没有办法绕过这个问题?我想这一定是很常见的问题,但我没有找到任何解决办法

提前感谢您的帮助。

我希望另一个my(链接到另外两个旧答案)将解决您的问题


如果您使用服务器基本数据类型(“json”和“xml”),服务器将始终生成id,您不必使id列可编辑。

如果您遵循此原则,则可以在输入方法
onCellSelect
oncetrow
时指示要编辑哪些列

为此,只需将“可编辑”属性更改为所需的值:

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

因此,这是一种变通方法,而不是问题的实际解决方案。这就像在db中自动生成ID列一样。但是,除了主键列之外,我还需要禁用其他列,以便根据业务请求进行编辑。让我们说,人地址的变化,但他的生日不会。因此,一旦进入系统,我想确保禁用生日编辑功能。(仅举一个例子)@harish:如果您使用表单编辑,您可以在编辑对话框中将
id
birthdate
列隐藏在
beforeShowForm
的编辑对话框中(如将禁用列
Name
)。以禁用列的方式进行编辑。在
beforeShowForm
中,您可以检查当前选定的行,并根据“业务请求”中更复杂的条件将其禁用。如果使用内联编辑,则可以在调用
editRow
之前设置
$(“#list”).jqGrid('getColProp','id')。禁用=false
,然后将其更改回来。