2011-07-21 16 views
5

En mi formateador, tengo el siguiente código:jqGrid número formateador uso

formatter: { 
    number: { decimalSeparator: ".", thousandsSeparator: " ", decimalPlaces: 4, defaultValue: '0.0000' } 
}, 

y en mi colModel tengo:

{ name: 'SalesPrice', index: 'SalesPrice', width: 90, align: 'left', formatter:'number', editable: true, editoptions: 
        { 
         readonly: true 
        } 
        } 

Mi tipo de datos se establece en "local"

Cuando primero muestro el formulario, obtengo "0.00" y no "0.0000" como estaba esperando. Además, en el modo de edición en línea, el valor SalesPrice cambia dependiendo de otras celdas en la grilla. Después de las actualizaciones, el valor de SalesPrice se muestra como un número entero.

¿Qué podría estar haciendo mal?

EDIT: Código más completo

$("#customerOrderLineList").jqGrid({ 
    //  url: 'someUrl', 
    datatype: 'local', 
    formatter: { 
     number: { decimalSeparator: ".", thousandsSeparator: " ", decimalPlaces: 4, defaultValue: '0.0000' } 
    }, 
    //  mtype: 'POST', 
    colNames: [ 'Part Number', 'Sales Price'], 
    colModel: [ 
        { name: 'PartNumber', index: 'PartNum', width: 90, align: 'left', editable: true, editoptions: 
        { 
         dataInit: function (el) { 
          $(el).autocomplete({ 
           source: "Autocomplete", 
           minLength: 1 
          }); 
         } 
        } 
        }, 

        { name: 'SalesPrice', index: 'SalesPrice', width: 90, align: 'left', formatter: 'number', 
         formatoptions: { decimalSeparator: ".", thousandsSeparator: " ", decimalPlaces: 4, defaultValue: '0.0000' }, editable: true, editoptions: 
        { 
         readonly: true 
        } 
        } 
      ], 
    pager: jQuery('#pager'), 
    rowNum: 10, 
    rowList: [5, 10, 20, 50], 
    sortable: true, 
    sortname: 'PartNum', 
    sortorder: "asc", 
    viewrecords: true, 
    imgpath: '', 
    autowidth: true, 
    onSelectRow: function (id, status) { 
     if (id && id !== lastsel) { 
      $('#customerOrderLineList').jqGrid('restoreRow', lastsel); 
      $('#customerOrderLineList').jqGrid('editRow', id, true); 
      lastsel = id; 
     } 
    }, 
    caption: 'Caption' 
}); 

Respuesta

6

No publicado su código completo, así que es difícil decir cuál es su problema. Solo mira the demo que hace lo que explicas y no tiene ningún problema.

utilicé formatoptions porque no estaba claro para mí dónde configuró los valores formatter para th number.

+0

Estaba siguiendo el ejemplo aquí http://www.trirand.com/jqgridwiki/doku.php?id=wiki:predefined_formatter. Básicamente, estaba declarando el formateador para toda la grilla en lugar de para una columna en particular. El uso del ejemplo dado funciona en la carga inicial de la grilla. Sin embargo, cuando el valor de SalesPrice cambia, todavía obtengo un entero. Actualizaré el código en el OP – DavidS

+0

El problema con la actualización SalesPrice no tuvo nada que ver con el formateo, aunque algunos pudieron haber esperado que el valor se pasara como "3" para "formatear" como "3.000". Pero he encontrado una solución a este problema. Entonces, realmente, el único problema pendiente que tengo con el formateador está relacionado con el hecho de que declarar el formateador globalmente no parece funcionar como se esperaba. Puede ser que esté equivocado. – DavidS

+1

@DavidS: malinterpretas la información de http://www.trirand.com/jqgridwiki/doku.php?id=wiki:predefined_formatter. El archivo específico del idioma, por ejemplo grid.locale-en.js, define el objeto '$ .jgrid' que tiene muchas propiedades, incluido' $ .jgrid.formatter.number'. Por ejemplo, puede establecer '$ .jgrid.formatter.number.decimalPlaces = 4; $ .jgrid.formatter.number.defaultValue: '0.0000'; 'antes de la llamada de' $ ("# customerOrderLineList"). jqGrid ({...}); '. Puede sobrescribir la configuración, pero no hay ningún parámetro 'formateador' de jqGrid. – Oleg