【问题标题】:jqGrid cell in edit mode only for inline add编辑模式下的 jqGrid 单元格仅用于内联添加
【发布时间】:2014-01-15 07:06:27
【问题描述】:

如何让一列只有在新行中时才可编辑?处于编辑模式时,此列在现有行中必须是只读的。

editable 属性适用于新行和现有行。

【问题讨论】:

  • 有一个参数可以禁用编辑,只启用添加。 .jqGrid('inlineNav',pagerid, {edit:false, add:true})
  • 用户可以编辑,但仅限于某些行。

标签: jqgrid mvcjqgrid


【解决方案1】:

您使用的编辑类型是什么? 表单编辑还是内联编辑?

如果是表单编辑,你可以使用 beforeShowForm 事件来隐藏编辑表单中不可编辑的字段。

beforeShowForm:function(formid)
{
 id="#tr_"+columnName(as given in column model);
 $(id, form).hide();
}

您需要使用相同的事件再次使隐藏字段在添加表单中可见

beforeShowForm:function(formid)
 {
  id="#tr_"+columnName(as given in column model);
  $(id, form).show();
 }

如果是调用editRow之前的内联编辑,则设置editable flag为false

$('#gridId').jqGrid('setColProp',columnName,{editable: false}); 

并且在 editRow 结束后将可编辑标志重置为 true 以使新添加的行可编辑

$('#gridId').jqGrid('setColProp',columnName,{editable: true}); 

希望对你有帮助....

【讨论】:

  • 我正在使用内联编辑,但是,用户可以同时编辑和添加新行,然后我无法禁用整个网格的列编辑。
  • 不要在列模型中设置可编辑标志。在调用 addRow 方法之前设置 $('#gridId').jqGrid('setColProp',columnName,{editable: true});并在调用 editRow 方法之前设置 $('#gridId').jqGrid('setColProp',columnName,{editable: false});
  • 我不会在每次更改时保存每一行,用户可以更改几个(或全部)并在提交之前添加一堆行。如果我使用 setColProp,则所有行的该列都将在这些事件上可编辑或只读。
  • 那么,你的问题是区分添加和编辑操作。你可以通过向rowdata添加一个新元素来做到这一点。 rowdata = ('#gridid').jqGrid ('getRowData',rowid);如果是添加操作 set rowdata.opflag = 'add';或者将其设置为“编辑”。在将行发送到编辑模式(onselectrow 或 ondoubleclick)之前读取此标志,并根据该标志设置相应列的可编辑属性为真或假。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多