const columnDefs = [
{ headerName: 'ID', field: 'id' },
{ headerName: 'Name', field: 'name' },
{ headerName: 'Age', field: 'age' },
];
// let the grid know which columns and what data to use
var gridOptions = {
defaultColDef: {
resizable: true,
sortable: true
},
columnDefs: columnDefs,
//enableSorting: true,
//enableFilter: true,
onFirstDataRendered: onFirstDataRendered,
};
// setup the grid after the page has finished loading
document.addEventListener('DOMContentLoaded', function () {
var gridDiv = document.querySelector('#myGrid');
new agGrid.Grid(gridDiv, gridOptions);
sampleReqToSetRowData();
});
/**
* autosize all columns (https://www.ag-grid.com/javascript-grid-resizing/#resizing-example)
*/
function autoSizeAll() {
var allColumnIds = [];
gridOptions.columnApi.getAllColumns().forEach(function (column) {
allColumnIds.push(column.colId);
});
gridOptions.columnApi.autoSizeColumns(allColumnIds);
}
function onFirstDataRendered(params) {
//commented code below can instead be used for sizing columns to fit
//params.api.sizeColumnsToFit();
//console.log(`Fired sizeColumnsToFit`, params.api.sizeColumnsToFit);
//will auto size all columns. see link provided in function declaration for more info
autoSizeAll();
}
/**
* just a sample to simulate API call to remote server to fetch some grid data
*/
function sampleReqToSetRowData() {
return new Promise((resolve) => {
setTimeout(() => {
var rowData = [
{ id: '0', name: 'Celica', age: 20 },
{ id: '1', name: 'Mondeo', age: 21 },
{ id: '2', name: 'Boxterrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr', age: 22 },
];
gridOptions.api.setRowData(rowData);
resolve();
}, 2000);
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://unpkg.com/ag-grid-community/dist/ag-grid-community.min.js"></script>
<div id="myGrid" style="height: 200px; width:500px;" class="ag-theme-alpine"></div>