2

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

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

4

2 回答 2

6

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

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

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

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

于 2012-10-05T10:57:28.873 回答
1

您可以跳过取消格式化程序以支持自定义编辑类型,只需在您的colModel

{ ..., edittype: 'custom', editoptions: { custom_element: function(value, options) { return $('<input type="text" value="' + value + '"/>'); }, custom_value: function(element){ return parseFloat(element.val())/100; }  }}
于 2012-10-05T10:23:35.683 回答