2013-06-10 5 views
2

Am utilisant JQGrid et obtenir Null affiché dans la grille car il vient de DB. Je peux changer la requête pour retourner la valeur vide.Afficher JQGRID vide au lieu de Null

Mais j'essaie de gérer en utilisant JQGrid. Comment puis-je replace null by blank values dans la grille.

Je ne veux pas montrer NULL aux utilisateurs à la place vide.

Comment réaliser ceci dans JQGrid?

Merci

Répondre

6

Il est probablement préférable que vous gérez ce côté serveur, mais si vous voulez le faire dans jqGrid, vous pouvez utiliser un custom formatter qui convertit NULL à la chaîne vide. (Je ne sais pas si vous êtes effectivement en revenir à la valeur null ou la chaîne "NULL", donc je traité les deux cas):

var nullFormatter = function(cellvalue, options, rowObject) { 
    if(cellvalue === undefined || isNull(cellvalue) || cellvalue === 'NULL') { 
     cellvalue = ''; 
    } 

    return cellvalue; 
} 

$("#myGridContainer").jqGrid({ 
    .... 
    colModel: [{ 
     label: 'Name', 
     name:'name', 
     index:'name', 
     formatter:nullFormatter 
    }, { 
     label: 'Next Column', 
     name:'nextCol', 
     index:'nextCol', 
     formatter: nullFormatter 
    }, ...], 
    .... 
} 
+2

'null' et' undefined' doit être converti [violon] automatiquement (http://jsfiddle.net/UG223/) – Andreas

+1

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

3

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. 
} 
+0

cellValue va provoquer un problème, devrait être cellvalue ... sinon ça marche pour moi! – IlludiumPu36

Questions connexes