2009-11-21 12 views
5

¿Cómo establecer en blanco en lugar de NaN en celdas jqGrid? ¿Usando formateador? Hay un ejemplo?En blanco cuando NaN en celdas jqGrid

+2

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

+0

+1 a lo anterior. raouf - ¿Puede proporcionar más información sobre su problema? Algunas muestras de código probablemente también ayuden. –

+0

¡Gracias Justin! Mostrar datos numéricos de la base de datos en jqgrid con el formateador: 'moneda' en colmodel funciona bien para valores no DBNull. Pero cuando el valor es DBNull aparece la palabra 'NaN' en la celda jqgrid. la pregunta es: cómo evitar 'NaN' y poner un espacio en blanco en su lugar. – raouf

Respuesta

0

En el servidor, antes de devolver los datos como XML/JSON/lo que sea, intente configurar valores DBNull equivalentes a una cadena en blanco.

Alternativamente, si es aceptable para mostrar los valores NULL como 0, podría modificar su SQL a lo largo de estas líneas:

SELECT IsNull(my_amount, 0) 
+1

Creo que la solución está en la opción formateador de colmodel. Hay dos formas: formateador predefinido y personalizado. En mi caso, quiero usar el formateador 'moneda' predefinido, pero con la posibilidad de devolver en blanco en lugar de 'NaN' cuando el valor es nulo. Parece que no hay forma de evitar reescribir mi función de formateador de moneda custum. Gracias de nuevo Justin. – raouf

+0

¡No hay problema, buena suerte! –

0

yo no lo reescribir el formateador personalizado - pero anularlo (o realiza una nueva uno)! De esta forma, cuando sale una nueva versión de jQgrid, no sobrescribe su envoltorio personalizado.

Por ejemplo, mis usuarios no quieren ver el valor si es 0, por lo que hacen:

$.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); 
}; 

Pero también se podría llamar:

$.fn.fmatter.currencyNoZero 

En su caso, me gustaría hacer esto:

$.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

esto es muy viejo, pero la documentación jqGrid no tenía una respuesta fácil a esta pregunta y se detiene fi primero en los resultados de Google cuando estaba buscando la misma respuesta.

I fue capaz de mostrar una celda en blanco en lugar de un 0 cuando se usa la opción formateador predefinido para un número entero mediante este código:

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

El defaultValue apenas se fija en blanco.

+1

Gracias a Dios que hubo alguien que hizo una pregunta "realmente" muy antigua :). Me salvaste el día incluso 3 años después. – elrado

+0

Agregue uno más al grupo agradecido. :) –

Cuestiones relacionadas