es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Angular ag grid valueGetter Angular ag grid valueGetter es una función utilizada en la biblioteca de Angular ag grid que permite obtener y manipular el valor de una celda en una cuadrícula. Esta función se utiliza para definir cómo se obtiene el valor de una columna específica y permite realizar cálculos o transformaciones en el valor antes de mostrarlo en la cuadrícula. Para utilizar valueGetter, se debe definir una función dentro de la configuración de la columna en la cuadrícula. Esta función debe tomar como parámetro un objeto “params” que contiene información sobre la celda actual, la fila y otros detalles relevantes. Dentro de la función, se puede acceder al valor de la celda utilizando la propiedad “data” del objeto params y realizar las operaciones necesarias. Aquí hay un ejemplo de cómo utilizar valueGetter en una columna de una cuadrícula de Angular ag grid: { headerName: ‘Precio total’, field: ‘precio’, valueGetter: function(params) { const cantidad = params.data.cantidad; const precioUnitario = params.data.precioUnitario; return cantidad * precioUnitario; } } En este ejemplo, el valueGetter se utiliza para calcular el precio total multiplicando la cantidad por el precio unitario de cada fila. El resultado se muestra en la columna “Precio total”.

Estoy tratando de crear una tabla de Ag Grid. Básicamente, tengo alrededor de 8 columnas. 3 de ellas son entradas de usuario y el resto son cálculos matemáticos basados en algunas ecuaciones.

Pensé que valueGetter sería un buen lugar para poner esos cálculos, pero para una celda necesito obtener datos de una fila diferente y ahí es donde comienzan los problemas.

Esta es mi definición de columna, y valueGetter para el campo x funciona bien porque está utilizando datos de la misma fila, pero para el campo xixi tengo que obtener datos de la fila anterior. He intentado con gridApi pero por supuesto es indefinido. Por favor ayuda.

columnDefs: ColDef[]=[
  {field: 'r', width:150, cellEditor: 'agRichSelectCellEditor'},
  {field: 'y', width:150, cellEditor: 'agRichSelectCellEditor'},
  {field: 'x', width:150, valueGetter: function (params) {
    return params.data.r * params.data.y;
  }},
  {field: 'xixi', width:150, valueGetter: function (params){
    if(params.node.rowIndex == 0) {return 0;}
    let indexBefore = params.node.rowIndex
    if(this.gridApi == undefined){return;}
    let dataBefore = this.gridApi.getDisplayedRowAtIndex(indexBefore-1);
    let data = params.data.x - dataBefore.x;
    return data;}},
  {field: 'koef', width:150, cellEditor: 'agRichSelectCellEditor'},
  {field: 'proizvod', width:150},
  {field: 'deltaY', width:190},
  {field: 'delta4y', width:150},
  {field: 'proizvodSum', width:150},
]
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para recuperar los datos de la fila anterior, puede utilizar el método api.getDisplayedRowAtIndex(index), donde index es el índice de la fila de la cual desea obtener los datos. En este caso, puede modificar la función valueGetter para el campo xixi de la siguiente manera:

    {field: 'xixi', width:150, valueGetter: function (params){
      if(params.node.rowIndex == 0) {return 0;}
      let indexBefore = params.node.rowIndex - 1;
      let dataBefore = params.api.getDisplayedRowAtIndex(indexBefore).data;
      let data = params.data.x - dataBefore.x;
      return data;
    }},
    

    Este código recupera los datos de la fila anterior a la fila actual utilizando api.getDisplayedRowAtIndex(indexBefore).data, y luego calcula la variable data como la diferencia entre el valor x de la fila actual y el valor x de la fila anterior.

Comments are closed.