使用jqGrid 4.3.1,我有一些隐藏在网格视图中的列,但我希望它们在编辑表单中可见并可编辑。
根据documentation,edithidden
模块的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”的方式实现简单性和可维护性,我也担心它为什么不起作用,以及其他可能存在的问题与此相关。
答案 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中无法正常工作。