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.

¿Cómo puedo establecer la opción predeterminada seleccionada en Ag-Grid React.js?

Utilizo react ag-grid y tengo checkboxSelection en las filas. Quiero que algunas filas estén predeterminadamente seleccionadas y otras no. ¿Cómo puedo hacerlo?

columnDefinationVoucherList: [
{ headerName: “”, cellRenderer: countCellIndex, width: 50, minWidth: 40, maxWidth: 50, editable: false, },
{ headerName: “Código de comprobante”, field: “ApplicationVoucher.Voucher.VoucherCode”, width: 50, minWidth: 50, maxWidth: 80, suppressSizeToFit: true, sortable: true },
{ headerName: “Nombre de comprobante”, field: “ApplicationVoucher.Voucher.VoucherName”, width: 120, minWidth: 50, suppressSizeToFit: true },
{ headerName: “Selec.”, field: “”, width: 90, minWidth: 10, suppressSizeToFit: true, maxWidth: 50, checkboxSelection: true, },
],

                                  <aggridreact columndefs="{this.state.columnDefinationVoucherList}" headerheight="{30}" rowheight="{20}" rowdata="{this.state.documentList}" oncolumnresized="{true}" enablecellchangeflash="{true}" enablecelltextselection="{true}" enablecellexpressions="{true}" enablesorting="{true}" enablefilter="{true}" enablegroupedit="{true}" enablerangehandle="{true}" defaultcoldef="{this.state.shortGridDefaultColDef}" rowselection="{'multiple'}" onselectionchanged="{this.GetSelectedVouchers}">
                                </aggridreact>

También uso modo enterprise. Por lo tanto, estoy abierto a todas las soluciones.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para verificar por defecto algunas filas y no verificar otras con checkboxSelection en Ag-Grid, hay algunos enfoques diferentes que puede tomar según sus requisitos específicos:

    1. Use la devolución de llamada getRowNodeId para establecer un identificador único para cada fila en sus datos, y luego use el método gridApi.forEachNode para iterar por las filas y establecer node.setSelected(true) o node.setSelected(false) según el identificador. Aquí hay un ejemplo:
      const rowIdsToCheck = ['row1', 'row5', 'row10']; // Reemplazar con sus propios identificadores de fila
      
      const gridOptions = {
       columnDefs: [{ 
         headerName: '', 
         field: 'checkbox', 
         checkboxSelection: true 
       }],
       rowData: [{ id: 'row1' }, { id: 'row2' }, /* ... */],
       getRowNodeId: data => data.id,
       onGridReady: params => {
         const { api } = params;
         api.forEachNode(node => {
           const rowId = node.data.id;
           if (rowIdsToCheck.includes(rowId)) {
             node.setSelected(true);
           } else {
             node.setSelected(false);
           }
         });
       },
      };
      
    2. Si tiene un número pequeño de filas que verificar, puede usar la propiedad rowClassRules para establecer una clase en cada fila que debe ser verificada, y luego use CSS para estilizar el checkbox. Aquí hay un ejemplo:
      const checkedRowClass = 'my-checked-row';
      const gridOptions = {
       columnDefs: [
         { headerName: '', field: 'checkbox', checkboxSelection: true },
         // ...
       ],
       rowData: [/* ... */],
       rowClassRules: {
         [checkedRowClass]: ({ data }) => data.shouldBeChecked,
       },
      };
      
      .ag-row .ag-selection-checkbox.ag-icon-checkbox-checked {
       /* Estilo para checkbox verificado */
      }
      .ag-row .my-checked-row .ag-selection-checkbox {
       /* Estilo para checkbox no verificado */
      }
      
    3. Use la propiedad defaultSelection para establecer una matriz de datos de fila que deben seleccionarse de manera predeterminada. Aquí hay un ejemplo:
      const defaultSelectedRows = [{ id: 'row1' }, { id: 'row5' }]; // Reemplazar con sus propias filas
      const gridOptions = {
       columnDefs: [/* ... */],
       rowData: [/* ... */],
       defaultColDef: {
         checkboxSelection: true,
         headerCheckboxSelection: false,
       },
       defaultSelection: defaultSelectedRows,
      };
      
    4. Si solo necesita seleccionar algunas filas programáticamente, puede usar el método setSelectedNodes en la API de la cuadrícula. Aquí hay un ejemplo:
      const rowsToSelect = ['row1', 'row5', 'row10']; // Reemplazar con sus propios identificadores de fila
      
      const gridOptions = {
       columnDefs: [{ 
         headerName: '', 
         field: 'checkbox', 
         checkboxSelection: true 
       }],
       rowData: [/* ... */],
       getRowNodeId: data => data.id,
       onGridReady: params => {
         const { api } = params;
         const nodesToSelect = rowsToSelect.map(rowId => api.getRowNode(rowId)).filter(Boolean);
         api.setSelectedNodes(nodesToSelect);
       },
      };
      

Comments are closed.