为什么jqGrid字段隐藏在表单编辑中,即使colModel中包含“edithidden:true”?

时间:2017-01-03 14:23:40

标签: javascript jquery html forms jqgrid

使用jqGrid 4.3.1,我有一些隐藏在网格视图中的列,但我希望它们在编辑表单中可见并可编辑。

根据documentationedithidden模块的editrules选项的colModel子选项可以实现我想要的确切行为(强调我的):

  

此选项仅在表单编辑模块中有效。默认情况下,隐藏字段不可编辑。 如果字段隐藏在网格中并且edithidden设置为true,则可以在调用添加或编辑方法时编辑该字段。

但是,当我实现以下代码时:

{name:'AcmeCoValue',editrules: {edithidden: true}, editable: true, show:'AcmeCovalue', hidden:true, fixed:'true', width: 65},

编辑表单的呈现HTML将此字段显示为:

<tr style="display:none" rowpos="7" class="FormData" id="tr_RedCoValue">

这与我设置时的行为相同:

editrules: {edithidden: false}

在我看来,edithidden参数无效。

我发现使其可见的唯一方法是使用formoptions:{rowpos:7}选项将字段强制显示在可见行上,即使在edithidden: false时也会显示该字段。

为什么edithidden似乎没有任何效果?

这是我继承的遗留代码。有什么我应该检查的,这可能会超越edithidden的预期行为吗?

我想我可以在Javascript中手动实现我想要的行为,但我更喜欢以“jqGrid”的方式实现简单性和可维护性,我也担心它为什么不起作用,以及其他可能存在的问题与此相关。

1 个答案:

答案 0 :(得分:2)

的用法
editrules: {edithidden: true}, editable: true, hidden: true

使列可编辑,但在“可编辑”下,意味着列中的数据将仅发送到服务器。因为jqGrid将表单中的数据发送到服务器,所以它会填充带有隐藏行的表单,但该行保持隐藏状态。

您可以在$("#tr_RedCoValue").show()回调中添加beforeShowForm(请参阅here)以解决问题。

在任何情况下,我都会严格建议您升级复古版本4.3.1,您可以将其用于free jqGrid 4.13.6,您可以在CDN中使用该版本(请参阅the wiki article和{{3} })。版本4.3.1在5年前发布得更多。这是Chrome 16,Firefox 8和IE9的时代。现在使用Chrome 55,Firefox 50.1,Microsoft Edge 38,IE11。不难理解,jqGrid 4.3.1在现代Web浏览器以及更新版本的jQuery和jQuery UI中无法正常工作。