'ag-grid: how to display full info on cell click?
I would like to display a user's full data when I click on a cell.
Here is my code :
function Home() {
const gridRef = useRef(); // Optional - for accessing Grid's API
const [rowData, setRowData] = useState(); // Set rowData to Array of Objects, one Object per Row
// Each Column Definition results in one Column.
const [columnDefs, setColumnDefs] = useState([
{ field: 'email', filter: true },
{ field: 'firstname', filter: true },
{ field: 'lastname', filter: true },
]);
// DefaultColDef sets props common to all Columns
const defaultColDef = useMemo(() => ({
flex: 1,
minWidth: 100,
// allow every column to be aggregated
enableValue: true,
// allow every column to be grouped
enableRowGroup: true,
// allow every column to be pivoted
enablePivot: true,
sortable: true,
filter: true,
}));
// Example of consuming Grid Event
const cellClickedListener = useCallback((event) => {
console.log(event);
return <div>{event}</div>;
}, []);
const [allUsers, setAllUsers] = useState([]);
useEffect(() => {
// line I changed
const fechedUsers = [];
const fetchData = async () => {
try {
const querySnapshot = await getDocs(collection(db, 'users'));
let allDocs = [];
querySnapshot.forEach((doc) => {
allDocs.push({ ...doc.data(), id: doc.id });
});
for (const item of allDocs) {
fechedUsers.push(item);
}
} catch (err) {
console.log(err);
}
setAllUsers(fechedUsers);
};
fetchData().then((rowData) => setRowData(fechedUsers));;
}, []);
// Example using Grid's API
const buttonListener = useCallback((e) => {
gridRef.current.api.deselectAll();
}, []);
return (
<div>
{/* Example using Grid's API */}
<button onClick={buttonListener}>Push Me</button>
{/* On div wrapping Grid a) specify theme CSS Class Class and b) sets Grid size */}
<div
className="ag-theme-alpine"
style={{ width: '100%', height: '50vh' }}
>
<AgGridReact
ref={gridRef} // Ref for accessing Grid's API
rowData={rowData} // Row Data for Rows
columnDefs={columnDefs} // Column Defs for Columns
defaultColDef={defaultColDef} // Default Column Properties
animateRows={true} // Optional - set to 'true' to have rows animate when sorted
rowSelection="single" // Options - allows click selection of rows
onCellClicked={cellClickedListener} // Optional - registering for Grid Event
/>
</div>
</div>
);
}
export default Home;
Now I only display in the table email, firstname and lastname.
I've noticed that the cellClickedListener returns the ful ldata of the current, clicked user.
Is there a way that I can display the full info at the bottom of the page ? Like this :
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|

