Id Name Birthday Age
921 Pathetic Assault on the Oregon Trail 11. 3. 1972 52
922 Real Catapult Training 22. 12. 2000 23
923 Tame Turtle 4. 12. 1961 62
924 French Zombie Revenge 3. 1. 1945 79
925 Tame Tern 1. 9. 1930 94
926 Metal Mafia Palace 11. 5. 1964 60
927 Bored Bat 28. 7. 1990 34
928 Sleepy Shark 12. 8. 1984 40
929 Exuberant Eagle 3. 12. 1992 31
930 Excited Eland 22. 9. 1971 53
931 Evil Elephant 23. 1. 1937 87
932 Sleepy Skunk 26. 3. 1934 90
933 Morbidly Obese Pokemon Melee 22. 1. 1968 56
934 Robot Horse Racing Overdrive 18. 9. 1942 82
935 Friendly Finch 11. 5. 1954 70
936 Fierce Falcon 2. 11. 1950 74
937 Uptight Unicorn 1. 12. 1982 41
938 Foolish Fox 13. 9. 1936 88
939 Double Biplane Mansion 10. 9. 1997 27
940 Nihilistic Mushroom Havoc 3. 3. 1939 85
( Items: 921 - 940 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;
}