J'ai eu le même problème.
Aussi, je voulais jqGrid
pour afficher mes chiffres avec séparateurs de milliers et 2 décimales, mais en utilisant la valeur par défaut 'number'
formatter causé des nulls (de la base de données) pour obtenir affichés comme « 0.00
» plutôt que d'être laissée en blanc.
$("#tblListOfRecords").jqGrid({
...
colModel: [
{ name: "SomeNumber", formatter: 'number', sorttype: "integer", formatoptions: { decimalPlaces: 2 } }
]
...
Ce n'était pas tout à fait ce que je voulais.
Ma solution a été d'écrire mon propre formatter:
$("#tblListOfRecords").jqGrid({
...
colModel: [
{ name: "SomeNumber", formatter: formatNumber}
]
});
function formatNumber(cellValue, options, rowdata, action) {
// Convert a jqGrid number string (eg "1234567.89012") into a thousands-formatted string "1,234,567.89" with 2 decimal places
if (cellValue == "")
return "";
if (cellValue == null || cellValue == 'null')
return "";
var number = parseFloat(cellValue).toFixed(2); // Give us our number to 2 decimal places
return number.toLocaleString(); // "toLocaleString" adds commas for thousand-separators.
}
'null' et' undefined' doit être converti [violon] automatiquement (http://jsfiddle.net/UG223/) – Andreas
Je suis sûr que * le code du serveur * renvoie '" null "' ou '" NULL "' au lieu de 'null' ce qui correspond au format JSON. Donc, le code du serveur a une erreur. La fixation du code serveur avec la fonction [ISNULL] [1] de SQL ou une autre fixation de code serait la meilleure solution. Si l'on utilise un formateur personnalisé, l'option 'aotoencode: true' ne fonctionnera pas pour la colonne. Je recommande d'inclure l'appel explicite de '$ .jgrid.htmlEncode' dans le formateur' nullFormatter' et de définir la fonction [unformat] (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:custom_formatter#unformatting) aussi. – Oleg