jqGrid - 格式比率字段为百分比值

时间:2012-10-05 09:43:00

标签: jqgrid percentage formatter

我的服务器代码将某些列作为比率值传输,0.0到1.0。我需要格式化将其编辑为百分比。我想在JavaScript方面这样做,而无需修改服务器端。因此,如果我添加一个自定义格式化程序,只是将该值乘以100,则显示按预期工作。此外,当我点击编辑按钮时,内联编辑框也会以百分比形式显示值。当我保存时会出现问题 - 这个值会被格式化程序再次转换,给我一些像10000这样的东西。好吧,我需要对称,所以我创建了一个只将值除以100的非格式化程序。但这也行不通 - 现在编辑控件将其显示为一个不是我想要的比例(虽然保存现在可以正常工作)。

有没有改变服务器代码的方法?

2 个答案:

答案 0 :(得分:6)

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

  1. 实施formatter以自定义方式显示网格中的数据。
  2. 实现unformat以允许从其“可视化表示”访问数据。在某些情况下,jqGrid将使用该方法(例如,在表单编辑的初始化阶段)。
  3. 定义sorttype,它可能是某些兼容类型的数据,例如'number'或您的自定义排序功能。
  4. 使用edittype: 'custom'并实施custom_element的{​​{1}}和custom_value(请参阅the documentation)。
  5. 使用editoptions并实施stype: 'custom'的{​​{1}}和custom_element
  6. 在某些情况下,可以跳过步骤中的一个,但在常见情况下,您必须考虑实施所有步骤。您应该验证解决方案中仍未实现上述哪些步骤。

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

答案 1 :(得分:1)

您可以跳过 unformatter 以支持自定义编辑类型,只需在colModel中使用

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