Id Name Birthday Age
301 Ashamed Armadillo 17. 7. 1935 89
302 Super Cooking Psychiatrist 9. 3. 1981 43
303 Lazy Kabuki Pioneer 9. 8. 1988 36
304 Odd Octopus 13. 8. 1948 76
305 Relieved Raven 22. 8. 1998 26
306 Legacy of Vocabulary Fest 3. 3. 1944 80
307 Hazardous Octopus Mania 23. 11. 1957 67
308 Amused Armadillo 14. 9. 1968 56
309 Mega Man Puzzle Dystopia 23. 7. 1979 45
310 Flying Porn Hoedown 25. 10. 1995 29
311 Sid Meier Flatulence Squadron 9. 10. 1971 53
312 Vast Vendace 3. 5. 1961 63
313 Ashamed Albatross 7. 1. 1931 93
314 Poised Puffin 2. 6. 1989 35
315 Street Metal Nitro 17. 7. 1972 52
316 Irritating Lizard - The Lost Levels 9. 2. 1948 76
317 Ultraviolent Pachinko 2000 20. 7. 1948 76
318 Insane Plunger Anarchy 13. 1. 1958 66
319 Blushing Booby 25. 4. 1969 55
320 Magnetic Amish Empire 17. 4. 1982 42
( Items: 301 - 320 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;
}