【问题标题】:Why are jqGrid fields hidden in form edit, even though "edithidden:true" is included in the colModel?为什么 jqGrid 字段隐藏在表单编辑中,即使 colModel 中包含“edithidden:true”?
【发布时间】:2017-01-03 14:23:39
【问题描述】:

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

根据documentationcolModel 模块的editrules 选项的edithidden 子选项启用了我想要的确切行为(强调我的):

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

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

{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”方式来实现它,而且我也担心它为什么不起作用,以及可能出现的其他问题和这个有关。

【问题讨论】:

    标签: javascript jquery html forms jqgrid


    【解决方案1】:

    用法

    editrules: {edithidden: true}, editable: true, hidden: true
    

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

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

    无论如何,我强烈建议您将使用的复古版本 4.3.1 升级到可以从 CDN 使用的free jqGrid 4.13.6(请参阅the wiki articlethe get started documentation)。 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 中无法正常工作。

    【讨论】:

    • 感谢您的回答。从 4.3.1 升级到 4.13.6 会影响在表单视图中显示可编辑字段的行为,但不会像您所描述的那样在网格视图中显示?
    • @StockB:不客气!您可以通过直接从 CDN 加载 jqGrid CSS 和 JS 文件轻松测试免费的 jqGrid 4.13.6(请参阅the wiki article)。您只需要修改 3 行 HTML 代码。您将看到editrules: {edithidden: true}, editable: true, hidden: true显示并允许编辑表单中的数据。免费 jqGrid 支持许多其他选项,例如可编辑为回调或 editable 的使用字符串值:“隐藏”、“禁用”或“只读”。我无法解释过去 5 年的特点。
    • 听起来升级可以让我省去这个头痛等等。我将在测试环境中尝试它以检查兼容性。
    • 简单地更新到 4.13.6 并没有神奇地解决问题,所以我怀疑可能有一些内部 CSS 或 JS 影响了这种行为。有时间我会试试beforeShowForm 函数。
    • @StockB:最好准备演示,它可以演示问题。看the demo。它在 Notes 和 Total 列中使用 hidden: true, editrules: { edithidden: true }, editable: true
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 2023-03-25
    相关资源
    最近更新 更多