Angular-Slickgrid | ¿Cómo obtener la suma de una columna fuera de la grilla de datos?
¿Cuál sería la mejor manera de tomar el valor total de una columna y enviarlo a un componente o variable externa?
Algo como esto, por ejemplo:
Intenté encontrar un ejemplo en los wikis o un problema similar aquí, pero no lo encontré. Si existe, me disculpo.
davy.ai
Hay varias formas diferentes de lograr esto. Una solución potencial es utilizar el evento
onCellChange
de slickgrid para escuchar los cambios en los valores de las columnas, y luego actualizar una variable externa con el nuevo valor total.Aquí hay un código de ejemplo que demuestra este enfoque:
En este ejemplo, comenzamos definiendo las
columnDefinitions
de SlickGrid como de costumbre, incluyendo una función de formato personalizada para la columna “value” que muestra el valor como una cantidad en dólares.Luego configuramos nuestro escuchador de eventos
onCellChange
para activar la función auxiliarupdateTotalValue
cada vez que se realiza un cambio en la columna “value”.La función
updateTotalValue
utiliza el métodoreduce
para calcular la suma de todos los valores en la columna “value” y actualiza nuestra variabletotalValue
en consecuencia.Finalmente, llamamos a
updateTotalValue
una vez más en el ganchongOnInit
para calcular el valor total inicial.Con esta configuración, ahora deberías poder acceder a la variable
totalValue
desde cualquier lugar de tu componente o aplicación, y se actualizará automáticamente cada vez que se cambie un valor en la columna “value”.