Id Name Link Status Action
461 Spunky Underwear Power
462 Turbo Castlevania Remix
463 Defiant Duck
464 Magnificent Mouse
465 Poor Platypus
466 Bad Barracuda
467 Mind-Bending Railroad Smackdown
468 Soviet Bongo Assassins
469 Stupid Squirrel
470 Christian Surf in Middle-Earth
471 Poor Puffin
472 Blue-eyed Badger
473 Brave Buzzard
474 Derek Smart Raccoon Colosseum
475 Successful Skylark
476 Silly Squirrel
477 No One Can Stop the Leisure Suit Shack
478 Wandering Wolf
479 Clean Civet
480 Courageous Cheetah
( Items: 461 - 480 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]);

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

	$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(
			fn (Row $row) => $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' => DateTime::fromSafe($row->asDateTime('birth_date'))?->format('j. n. Y'),
			'link' => $row['name'],
			'status' => $row['status'],
		]);
	};

	$inlineEdit->onSubmit[] = function ($id, $values): void {
		$this->dibiConnection->update('users', ['name' => $values['name']])->where('id = %i', $id)->execute();
		$this->flashMessage('Record was updated!', 'success');
		$this->redrawControl('flashes');
	};

	$inlineEdit->setShowNonEditingColumns();

	return $grid;
}