我的服务器代码将某些列作为比率值传输,0.0到1.0。我需要格式化和将其编辑为百分比。我想在JavaScript方面这样做,而无需修改服务器端。因此,如果我添加一个自定义格式化程序,只是将该值乘以100,则显示按预期工作。此外,当我点击编辑按钮时,内联编辑框也会以百分比形式显示值。当我保存时会出现问题 - 这个值会被格式化程序再次转换,给我一些像10000这样的东西。好吧,我需要对称,所以我创建了一个只将值除以100的非格式化程序。但这也行不通 - 现在编辑控件将其显示为一个不是我想要的比例(虽然保存现在可以正常工作)。
有没有改变服务器代码的方法?
答案 0 :(得分:6)
要完全支持您的自定义数据类型,例如0.0到1.0,显示为百分比值,包括编辑和搜索,您必须实现:
formatter
以自定义方式显示网格中的数据。unformat
以允许从其“可视化表示”访问数据。在某些情况下,jqGrid将使用该方法(例如,在表单编辑的初始化阶段)。sorttype
,它可能是某些兼容类型的数据,例如'number'
或您的自定义排序功能。edittype: 'custom'
并实施custom_element
的{{1}}和custom_value
(请参阅the documentation)。editoptions
并实施stype: 'custom'
的{{1}}和custom_element
。在某些情况下,可以跳过步骤中的一个,但在常见情况下,您必须考虑实施所有步骤。您应该验证解决方案中仍未实现上述哪些步骤。
The demo是对来自the old answer和another 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; } }}