如何将点转换为逗号任意数量的小数位

免费的jqgrid数据来自服务器的json字符串。 它可以包含不同数量的小数位

amount: "300.1", tax: "20.12", total: "320.123" 

此数据应在jqgrid列中以逗号分隔显示

 300,1 20,12 320,123 

使用内容为此创建了区域设置文件grid.locale-et.js.

 formatter: { integer: { thousandsSeparator: " ", defaultValue: "0" }, number: { decimalSeparator: ",", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: "0,00" }, 

template: 'number'使用colmodel中的template: 'number'选项。 这显示了所有具有2位数字的列

 300,10 20,12 320,12 

如何解决这个问题,以便列显示正确的小数位数?

我尝试了colmodel

 "template":"number", "decimalPlaces":4 

但它仍然显示2位小数。 不使用模板显示正确的小数位数。

测试用例位于http://jsfiddle.net/xssnr1gn/3/

它包含

  { id: "20", invdate: "2007-10-02", name: "test2", note: "note2", amount: "300.1", tax: "20.12", closed: false, ship_via: "FE", total: "320.123" }, 

但是每列的输出是小数点后2位。

更新

如果decimalPlaces: 2,则jqgrid看起来像

去除

问题:

  1. 小数分隔符更改为。
  2. 可变小数位数
  3. 这是不可理解的价值7 146 2.8
  4. 对于某些数字空格出现在小数点之前

来自服务器的数据包含固定数量的小数位。 如何显示与服务器数据完全相同的小数位数?

http://jsfiddle.net/xssnr1gn/4/

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:predefined_formatter

您需要应用formatter和formatoptions

 formatter: "number", formatoptions: {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 4, defaultValue: '0.0000'} 

完整代码:

 $(function () { "use strict"; var mydata = [ { id: "10", invdate: "2007-10-01", name: "test", note: "note", amount: "", tax: "", closed: true, ship_via: "TN", total: "" }, { id: "20", invdate: "2007-10-02", name: "test2", note: "note2", amount: "300.1", tax: "20.12", closed: false, ship_via: "FE", total: "320.123" }, { id: "30", invdate: "2007-09-01", name: "test3", note: "note3", amount: "400.00", tax: "30.00", closed: false, ship_via: "FE", total: "430.00" }, { id: "40", invdate: "2007-10-04", name: "test4 test4 test4", note: "note4", amount: "200.00", tax: "10.00", closed: true, ship_via: "TN", total: "210.00" }, { id: "50", invdate: "2007-10-31", name: "test5", note: "note5", amount: "300.00", tax: "20.00", closed: false, ship_via: "FE", total: "320.00" }, { id: "60", invdate: "2007-09-06", name: "test6", note: "note6", amount: "400.00", tax: "30.00", closed: false, ship_via: "FE", total: "430.00" }, { id: "70", invdate: "2007-10-04", name: "test7", note: "note7", amount: "200.00", tax: "10.00", closed: true, ship_via: "TN", total: "210.00" }, { id: "80", invdate: "2007-10-03", name: "test8", note: "note8", amount: "300.00", tax: "20.00", closed: false, ship_via: "FE", total: "320.00" }, { id: "90", invdate: "2007-09-01", name: "test9 test9 test9 test9 test9", note: "note9", amount: "400.00", tax: "30.00", closed: false, ship_via: "TN", total: "430.00" }, { id: "100", invdate: "2007-09-08", name: "test10", note: "note10", amount: "500.00", tax: "30.00", closed: true, ship_via: "TN", total: "530.00" }, { id: "110", invdate: "2007-09-08", name: "test11", note: "note11", amount: "500.00", tax: "30.00", closed: false, ship_via: "FE", total: "530.00" }, { id: "120", invdate: "2007-09-10", name: "test12", note: "note12", amount: "500.00", tax: "30.00", closed: false, ship_via: "FE", total: "530.00" } ], $grid = $("#list"), initDateEdit = function (elem) { $(elem).datepicker({ dateFormat: "dd-M-yy", autoSize: true, changeYear: true, changeMonth: true, showButtonPanel: true, showWeek: true }); }, initDateSearch = function (elem) { setTimeout(function () { initDateEdit(elem); }, 50); }; $grid.jqGrid({ data: mydata, colNames: ["", "Client", "Date", "Amount", "Tax", "Total", "Closed", "Shipped via", "Notes"], colModel: [ { name: "act", template: "actions" }, { name: "name", align: "center", width: 100, editrules: {required: true} }, { name: "invdate", width: 82, align: "center", sorttype: "date", frozen: true, formatter: "date", formatoptions: { newformat: "dMY", reformatAfterEdit: true }, datefmt: "dMY", editoptions: { dataInit: initDateEdit }, searchoptions: { sopt: ["eq", "ne", "lt", "le", "gt", "ge"], dataInit: initDateSearch } }, { name: "amount", width: 62, template: "number", formatter: "number", formatoptions: {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 4, defaultValue: '0.0000'}, editoptions: { type: "number", step: "0.01", min: "0.00", max: "1000", pattern: "[0-9]+([\.|,][0-9]+)?", title: "This should be a number with up to 2 decimal places." } }, { name: "tax", width: 45, template: "number", autoResizableMinColSize: 40 }, { name: "total", width: 53, template: "number" }, { name: "closed", width: 60, template: "booleanCheckboxFa" }, { name: "ship_via", width: 76, align: "center", formatter: "select", edittype: "select", editoptions: { value: "FE:FedEx;TN:TNT;IN:Intim", defaultValue: "IN" }, stype: "select", searchoptions: { sopt: ["eq", "ne"], value: ":Any;FE:FedEx;TN:TNT;IN:IN" } }, { name: "note", width: 43, edittype: "textarea", sortable: false } ], cmTemplate: { editable: true, autoResizable: true }, autoResizing: { compact: true }, iconSet: "fontAwesome", rowNum: 10, rowList: [5, 10, 20, "10000:All"], viewrecords: true, autoencode: true, pager: true, sortname: "invdate", sortorder: "desc", searching: { defaultSearch: "cn", searchOperators: true } }) .jqGrid("filterToolbar") .jqGrid("gridResize"); });