2009-11-21 9 views
5

Wie setze ich anstelle von NaN in jqGrid Zellen leer? Formatierer verwenden? Gibt es ein Beispiel?Leer, wenn NaN in jqGrid-Zellen

+2

http://catb.org/~esr/faqs/smart-questions.html#beprecise –

+0

+1 zu den oben genannten. raouf - Können Sie mehr Informationen zu Ihrem Problem geben? Einige Code-Beispiele würden wahrscheinlich auch helfen. –

+0

Danke Justin! Anzeigen numerischer Datenbankdaten in jqgrid mit Formatierung: 'currency' in colmodel funktioniert gut für nicht DBNull-Werte. Aber wenn der Wert DBNull ist, erscheint das Wort 'NaN' in der jqgrid-Zelle. Die Frage ist: Wie vermeidet man 'NaN' und setzt stattdessen ein Leerzeichen (Leerzeichen) ein? – raouf

Antwort

0

Bevor Sie auf dem Server Ihre Daten als XML/JSON/was auch immer zurückgeben, versuchen Sie, DBNull-Werte gleich einer leeren Zeichenfolge zu setzen.

Alternativ kann, wenn es akzeptabel ist, NULL-Werte als 0 angezeigt werden, könnten Sie Ihre SQL entlang dieser Linien ändern:

SELECT IsNull(my_amount, 0) 
+1

Ich denke, dass die Lösung in der Formatierungsoption von Colmodel ist. Es gibt zwei Möglichkeiten: Vordefinierter und benutzerdefinierter Formatierer. In meinem Fall möchte ich den vordefinierten Formatierer "currency" verwenden, aber mit der Möglichkeit, anstelle von "NaN" einen leeren Wert zurückzugeben, wenn der Wert null ist. Es scheint, dass es keine Möglichkeit gibt, das Umschreiben meiner Kunden-Währungsformatierungsfunktion zu vermeiden. Vielen Dank Justin. – raouf

+0

Kein Problem, viel Glück! –

0

würde ich nicht die benutzerdefinierten Formatierer neu schreiben - aber außer Kraft setzen sie (oder ein neues machen ein)! Wenn eine neue Version von jQgrid herauskommt, überschreiben Sie Ihren benutzerdefinierten Wrapper nicht.

Zum Beispiel meine Nutzer wollen nicht um den Wert zu sehen, ob es 0 ist, so dass ich dies tun:

$.fn.fmatter.currency = function (cellval, opts) { 
    if (cellval == 0) { 
     return ''; 
    } 
    var op = $.extend({},opts.currency); 
    if(!isUndefined(opts.colModel.formatoptions)) { 
     op = $.extend({},op,opts.colModel.formatoptions); 
    } 
    if(isEmpty(cellval)) { 
     return op.defaultValue; 
    } 
    return $.fmatter.util.NumberFormat(cellval,op); 
}; 

Aber ich könnte es auch nennen:

$.fn.fmatter.currencyNoZero 

In Ihrem Fall, würde ich dies tun:

$.fn.fmatter.currency = function (cellval, opts) { 
    if (cellval == null) { 
     return ''; 
    } 
    var op = $.extend({},opts.currency); 
    if(!isUndefined(opts.colModel.formatoptions)) { 
     op = $.extend({},op,opts.colModel.formatoptions); 
    } 
    if(isEmpty(cellval)) { 
     return op.defaultValue; 
    } 
    return $.fmatter.util.NumberFormat(cellval,op); 
}; 
6

das ist wirklich alt, aber die jqGrid Dokumentation nicht über eine einfache Antwort und diese Frage zieht fi zuerst in Google Ergebnisse, als ich nach der gleichen Antwort suchte.

konnte ich eine leere Zelle anstelle eines 0 angezeigt wird, wenn die vordefinierte Formatierungsprogramm Option für eine ganze Zahl mit diesem Code:

{ name: 'Quantity', formatter: 'integer', formatoptions: { defaultValue: ''} } 

Die defaultValue ist leer gerade eingestellt haben.

+1

Gott sei Dank, dass da jemand war, der eine "wirklich" alte Frage ansawer hat :). Du hast meinen Tag sogar 3 Jahre später gerettet. – elrado

+0

Fügen Sie einen weiteren zu der dankbaren Gruppe hinzu. :) –