Я хочу прошить первую строку сетки. Моя сетка имеет только одну строку. Я хочу загрузить данные в сетку, а также прошить ячейку. У меня есть пример кода. Если вы заметили метод onInsertOne. Это не работает в первый раз, но работает, когда мы нажимаем кнопку во второй раз. Как прошить сотовый в первый раз.
let items = [];
gridAPI.forEachNode(function(rowNode, index) {
items.push(rowNode); --> row Node is empty for the first time.
});
Я также пробовал getDisplayedRowAtIndex(0), но не повезло.
import {AgGridReact} from 'ag-grid-react';
import 'ag-grid-community/dist/styles/ag-grid.css';
import 'ag-grid-community/dist/styles/ag-theme-alpine.css';
import {useState, useRef, useEffect, useMemo, useCallback} from 'react';
import {createOneCarRecord} from './carFactory';
let gridAPI = null;
export const AppHighLightFirstRow = () => {
const gridRef = useRef();
const [rowData, setRowData] = useState(null);
let cars = [];
const [columnDefs, setColumnDefs] = useState([
{ field: 'type', sortable: true },
{ field: 'year' },
{ field: 'color' },
{ field: 'price' }
])
const getRowId = useCallback( params => {
return params.data.id;
});
const onInsertOne = useCallback( ()=> {
const newRecord = createOneCarRecord();
let cars = [newRecord];
setRowData(cars);
let items = [];
gridAPI.forEachNode(function(rowNode, index) {
items.push(rowNode);
});
console.info(`Items Length to highLight =${items.length}`,items)
gridAPI.flashCells({ rowNodes: items , flashDelay: 2000, fadeDelay: 1000});
});
const onGridReady = (params) => {
params.api.hideOverlay();
gridAPI = params.api;
}
return (
<div className = "ag-theme-alpine" style = {{height: '100%'}}>
<div><button onClick = {onInsertOne}>Insert One</button></div>
<AgGridReact ref = {gridRef}
enableCellChangeFlash = {true}
getRowId = {getRowId}
rowSelection = {'multiple'}
rowData = {rowData}
animateRows = {true}
columnDefs = {columnDefs}
onGridReady = {onGridReady}
/>
</div>
)
}
Вы можете использовать событие onRowDataUpdated
<AgGridReact
...
onRowDataUpdated = {({api}) => {
const items = [];
api.forEachNode(function(rowNode) {
items.push(rowNode);
});
console.info(`Items Length to highLight =${items.length}`,items)
api.flashCells({ rowNodes: items , flashDelay: 2000, fadeDelay: 1000});
}}
/>