Id Name Link Status Action
981 Dwarven Bomberman Showdown
982 Sleepy Stoat
983 Busy Buzzard
984 Calm Caterpillar
985 M.C. Escher Bass Thieves
986 My Little Punching vs. The Space Mutants
987 The Muppets Computer EX
988 Rad Bandicoot on Wheels
989 God of Ninja Spree
990 Filthy Fly
991 Anxious Anteater
992 Infinite Biplane in the Desert
993 Smiling Seahorse
994 Brave Beetle
995 Testy Tern
996 Modern Moth
997 Faithful Ferret
998 Helpless Hawk
999 Enraged Internet Base
1 000 Wide-eyed Warbler
( Items: 981 - 1000 from 1000 )
  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]);

	$grid->addColumnNumber('id', 'Id')
		->setSortable()
		->setAlign('left');

	$grid->addColumnText('name', 'Name')
		->setSortable()
		->setEditableCallback(function ($id, $value): void {
			$this->flashMessage(sprintf('Id: %s, new value: %s', $id, $value));
			$this->redrawControl('flashes');
		})->addCellAttributes(['class' => 'text-center']);

	$grid->addColumnLink('link', 'Link', 'this#demo', 'name', ['id', 'surname' => 'name'])
		->setEditableValueCallback(
			function (Row $row) {
				return $row['name'];
			}
		)
		->setEditableCallback(function ($id, $value): string {
			$this->flashMessage(sprintf('Id: %s, new value: %s', $id, $value));
			$this->redrawControl('flashes');

			$link = Html::el('a')
				->href($this->link('this#demo', ['id' => $id]))
				->setText($value);

			return (string) $link;
		})->addCellAttributes(['class' => 'text-center']);

	$grid->addColumnStatus('status', 'Status');

	$inlineEdit = $grid->addInlineEdit();

	$inlineEdit->onControlAdd[] = function ($container): void {
			$container->addText('name', '')
				->setRequired('aaa');
			$container->addText('birth_date', '');
			$container->addText('link', '');
			$container->addSelect('status', '', [
				'active' => 'Active',
				'inactive' => 'Inactive',
				'deleted' => 'Deleted',
			]);
	};

	$inlineEdit->onSetDefaults[] = function (Container $container, Row $row): void {
		$container->setDefaults([
			'id' => $row['id'],
			'name' => $row['name'],
			'birth_date' => $row['birth_date']->format('j. n. Y'),
			'link' => $row['name'],
			'status' => $row['status'],
		]);
	};

	$inlineEdit->onSubmit[] = function ($id, $values): void {
		$this->flashMessage('Record was updated! (not really)', 'success');
		$this->redrawControl('flashes');
	};

	$inlineEdit->setShowNonEditingColumns();

	return $grid;
}