number column colmodel jqgrid percentage formatter

colmodel - jqgrid order column



jqGrid-campo de relaciĆ³n de formato como valor porcentual (2)

Mi código de servidor transfiere algunas columnas como un valor de razón, de 0.0 a 1.0. Necesito formatearlo y editarlo como un porcentaje. Me gustaría hacerlo en el lado de JavaScript, sin modificar el lado del servidor. Entonces, si agrego un formateador personalizado para simplemente multiplicar el valor por 100, la pantalla funciona como se esperaba. Además, cuando presiono el botón Editar, el cuadro de edición en línea también muestra el valor como porcentaje. El problema comienza cuando guardo - el valor se convierte con el formateador una vez más , dándome cosas como 10000. Así que, OK, necesito simetría aquí, así que creo un formateador que solo divide el valor por 100. Pero eso tampoco funciona - Ahora el control de edición lo muestra como una proporción que no es lo que quería (aunque ahora el guardado funciona correctamente).

¿Hay alguna forma de cambiar el código del servidor?


Para tener un soporte completo de su tipo de datos personalizado como 0.0 a 1.0 que se muestra como valor porcentual, incluida la edición y búsqueda, debe implementar:

  1. implementar el formatter para mostrar los datos en la grilla de la manera personalizada.
  2. implementar un unformat para permitir el acceso a los datos desde su "representación visual". El método será utilizado por jqGrid en algunas situaciones (por ejemplo, durante la fase de inicialización de la edición del formulario).
  3. define sorttype , que podría ser algún tipo de datos compatibles como ''number'' o su función de clasificación personalizada.
  4. use edittype: ''custom'' e implemente custom_element y custom_value de editoptions (vea la documentación ).
  5. use stype: ''custom'' e implemente custom_element y custom_value of editoptions .

En algunas situaciones, uno de los pasos se puede omitir, pero en el caso común hay que pensar en la implementación de todos los pasos. Debe verificar qué pasos de arriba todavía no están implementados en su solución.

La demostración es la modificación de la demostración de la respuesta anterior y otra respuesta . La demostración no está orientada en su pregunta directa . Muestra por qué y cómo se puede implementar completamente el control personalizado en jqGrid. La función de edición de formularios no está completa en la demostración solo porque no se implementó ninguna parte del servidor. Si es necesario, se puede usar el enfoque de la respuesta que muestra cómo la edición de forma local se puede implementar en jqGrid. No quería hacer el código más complejo para mostrar el propósito principal de la demostración.


Puede omitir el desajuste a favor del tipo de edición personalizado , solo use esto en su colModel :

{ ..., edittype: ''custom'', editoptions: { custom_element: function(value, options) { return $(''<input type="text" value="'' + value + ''"/>''); }, custom_value: function(element){ return parseFloat(element.val())/100; } }}