【问题标题】:jqGrid - format ratio field as percent valuejqGrid - 将比率字段格式化为百分比值
【发布时间】:2012-10-05 09:43:00
【问题描述】:

我的服务器代码将某些列作为比率值传输,0.0 到 1.0。我需要格式化将其编辑为百分比。我想在 JavaScript 端做,而不修改服务器端。因此,如果我添加一个自定义格式化程序以将值乘以 100,则显示按预期工作。此外,当我点击编辑按钮时,内联编辑框也会以百分比显示值。当我保存时,麻烦就开始了——值被格式化器再转换一次,给了我 10000 之类的东西。好吧,我在这里需要对称,所以我创建了一个 unformatter,它只是将值除以 100。但这也不起作用 - 现在编辑控件将其显示为不是我想要的比率(尽管现在保存可以正常工作)。

有什么办法不改变服务器代码?

【问题讨论】:

    标签: jqgrid percentage formatter


    【解决方案1】:

    要完全支持您的自定义数据类型,例如 0.0 到 1.0 显示为百分比值(包括编辑和搜索),您必须实现:

    1. 实现formatter以自定义方式显示网格中的数据。
    2. 实现unformat 以允许从其“可视化表示”访问数据。 jqGrid 在某些情况下(例如在表单编辑的初始化阶段)会使用该方法。
    3. 定义sorttype,它可以是一些兼容类型的数据,例如'number' 或您的自定义排序函数。
    4. 使用edittype: 'custom' 并实现custom_elementcustom_valueeditoptions(参见the documentation)。
    5. 使用stype: 'custom' 并实现custom_elementcustom_valueeditoptions

    在某些情况下,可能会跳过其中一个步骤,但在常见情况下,您必须考虑实施所有步骤。您应该验证上述哪些步骤仍未在您的解决方案中实施。

    The demo是对the old answeranother answer的demo的修改。该演示不是针对您的直接问题。它仅显示了 为什么如何 在 jqGrid 中完全实现自定义控件。表单编辑的功能在演示中并不完整,只是因为没有实现服务器部分。如果需要,可以使用the answer 中的方法,该方法显示了如何在 jqGrid 中实现本地表单编辑。我不想让代码更复杂,以显示演示的主要目的。

    【讨论】:

    • 谢谢你这么详细的回答。
    【解决方案2】:

    您可以跳过 unformatter 以支持 custom 编辑类型,只需在您的 colModel 中使用它:

    { ..., edittype: 'custom', editoptions: { custom_element: function(value, options) { return $('<input type="text" value="' + value + '"/>'); }, custom_value: function(element){ return parseFloat(element.val())/100; }  }}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-30
      • 2016-03-13
      • 1970-01-01
      • 2013-06-08
      • 2011-11-01
      相关资源
      最近更新 更多