Para una de las columnas de mi jqGrid, me estoy dando un formateador personalizado de la función. Me estoy dando algunos casos especiales, pero si esas condiciones no se cumplen, me gustaría recurrir al uso de la incorporada en la fecha de formateador método de utilidad. No me parece que me voy a conseguir la combinación correcta de $.extender() para crear las opciones que el método está esperando.

Mi colModel para esta columna:

{ name:'expires', 
    index:'7',
    width:90,
    align:"right",
    resizable: false,
    formatter: expireFormat,
    formatoptions: {srcformat:"l, F d, Y g:i:s A",newformat:"n/j/Y"}
},

Y un ejemplo de lo que estoy tratando de hacer

function expireFormat(cellValue, opts, rowObject) {
    if (cellValue == null || cellValue == 1451520000) {
        //a specific date that should show as blank
        return '';
    } else {
        //here is where I'd like to just call the $.fmatter.util.DateFormat
        var dt = new Date(cellValue * 1000);
        var op = $.extend({},opts.date);
        if(!isUndefined(opts.colModel.formatoptions)) {
            op = $.extend({},op,opts.colModel.formatoptions);
        }
        return $.fmatter.util.DateFormat(op.srcformat,dt,op.newformat,op);
    }
}

(Una excepción es la de ser arrojados en las entrañas de los que DateFormat método, se parece a donde se está tratando de leer en una de las máscaras de la propiedad de las opciones que se pasan en)

EDICIÓN:

El $.extender, poner todo en el lugar que se necesitaba era conseguir que desde que el mundial de la propiedad, donde la i18n de la biblioteca de establecer, $.jgrid.formateador.fecha.

var op = $.extend({}, $.jgrid.formatter.date);
if(!isUndefined(opts.colModel.formatoptions)) {
    op = $.extend({}, op, opts.colModel.formatoptions);
}
return $.fmatter.util.DateFormat(op.srcformat,dt.toLocaleString(),op.newformat,op);
InformationsquelleAutor great_llama | 2010-05-21

1 Comentario

  1. 4

    En el jqGrid código fuente, diferentes opciones de pasar a la formateador cuando es una función integrada en cuando frente a un formateador personalizado se utiliza:

        formatter = function (rowId, cellval , colpos, rwdat, _act){
            var cm = ts.p.colModel[colpos],v;
            if(typeof cm.formatter !== 'undefined') {
                var opts= {rowId: rowId, colModel:cm, gid:ts.p.id };
                if($.isFunction( cm.formatter ) ) {
                    v = cm.formatter.call(ts,cellval,opts,rwdat,_act);
                } else if($.fmatter){
                    v = $.fn.fmatter(cm.formatter, cellval,opts, rwdat, _act);
                } else {
                    v = cellVal(cellval);
                }
            } else {
                v = cellVal(cellval);
            }
            return v;
        },

    Así que, básicamente, lo que sucede es que cuando un built-in formateador se utiliza, cm.formatter que se pasa como argumento. Tengo que confirmar esto, pero se basa en el error que está recibiendo, esto parece ser una copia de la formatter opciones de grid.locale-en.js (o cualquier versión de la i18n de archivo que se esté usando). Así que cuando llama internamente el formateador de contener opciones adicionales, tales como masks – que es el que tu código está fallando en.

    Como una medida preventiva, me gustaría probar la adición de masks a su op variable. Si resuelve su problema, entonces lo ideal, de lo contrario, mantenga la adición de la falta de opciones en el código hasta que funcione.

    ¿Eso ayuda?

    • Sí, parece que me tenía que extenderse a partir de la i18n formateador de opciones, encontrar la combinación correcta. Gracias!
    • Eres bienvenido, encantado de ayudar 🙂

Dejar respuesta

Please enter your comment!
Please enter your name here