Id Name Birthday Age
341 Inappropriate Arcade Armada 9. 8. 1947 77
342 Dwarven Fun Fight Club 12. 10. 1949 75
343 Nutty Newt 16. 8. 1993 31
344 Tense Tuatara 1. 4. 1952 72
345 Brainy Buffalo 17. 2. 1991 33
346 College Devil from Planet X 5. 3. 1980 44
347 Gentle Gibbon 9. 10. 1934 90
348 Allied Dodgeball - The Next Generation 11. 9. 1961 63
349 Crowded Crab 16. 7. 1981 43
350 Enchanting Eagle 28. 2. 1951 73
351 Wicked Weasel 24. 9. 1973 51
352 Sore Sloth 6. 7. 1941 83
353 Peaceful Sewer Smash 7. 3. 1999 25
354 Peaceful Chess Party 6. 8. 1973 51
355 Nasty Narwhal 4. 10. 1935 89
356 Bloody Booty Trader 9. 3. 1993 31
357 Weary Breakdancing II 7. 1. 1967 57
358 Exuberant Eel 13. 12. 1983 40
359 Nutty Newt 10. 1. 1980 44
360 Aquatic Katana Bandits 9. 2. 1980 44
( Items: 341 - 360 from 1020 )
  See the code below 👇 or see GitHub
public function createComponentGrid(): DataGrid
{
	$grid = new DataGrid();

	$grid->setDataSource($this->dibiConnection->select('*')->from('users'));

	$grid->setItemsPerPageList([20, 50, 100], true);

	$grid->addColumnText('id', 'Id')
		->setSortable();

	$grid->addColumnText('email', 'E-mail')
		->setSortable()
		->setFilterText();

	$grid->addColumnText('name', 'Name')
		->setFilterText();

	$grid->addColumnDateTime('birth_date', 'Birthday')
		->setFormat('j. n. Y');

	$grid->addColumnNumber('age', 'Age')
		->setRenderer(fn (Row $row): ?int => DateTime::fromSafe($row->asDateTime('birth_date'))?->diff(new DateTime())->y);

	return $grid;
}