Here i give your answer please follow bellow steps
your_grid.xml
<actionsColumn name="actions" class="[vendor]\[module]\Ui\Component\Listing\Column\Actions">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="indexField" xsi:type="string">id</item>
</item>
</argument>
</actionsColumn>
app/code/[vendor]/[module]/Ui/Component/Listing/Column/Actions.php
<?php
namespace [vendor]\[module]\Ui\Component\Listing\Column;
use Magento\Framework\UrlInterface;
use Magento\Framework\View\Element\UiComponent\ContextInterface;
use Magento\Framework\View\Element\UiComponentFactory;
use Magento\Ui\Component\Listing\Columns\Column;
class Actions extends Column
{
const URL_PATH_EDIT = '[router]/[controller]/edit';
const URL_PATH_DELETE = '[router]/[controller]/delete';
const URL_PATH_DETAILS = '[router]/[controller]/details';
protected $urlBuilder;
public function __construct(
ContextInterface $context,
UiComponentFactory $uiComponentFactory,
UrlInterface $urlBuilder,
array $components = [],
array $data = []
) {
$this->urlBuilder = $urlBuilder;
parent::__construct($context, $uiComponentFactory, $components, $data);
}
public function prepareDataSource(array $dataSource)
{
if (isset($dataSource['data']['items'])) {
foreach ($dataSource['data']['items'] as & $item) {
if (isset($item['primary_id'])) {
$item[$this->getData('name')] = [
'edit' => [
'href' => $this->urlBuilder->getUrl(
static::URL_PATH_EDIT,
[
'id' => $item['primary_id']
]
),
'label' => __('Edit')
],
'delete' => [
'href' => $this->urlBuilder->getUrl(
static::URL_PATH_DELETE,
[
'id' => $item['primary_id']
]
),
'label' => __('Delete'),
'confirm' => [
'title' => __('Delete "${ $.$data.title }"'),
'message' => __('Are you sure you wan\'t to delete a "${ $.$data.title }" record?')
]
]
];
}
}
}
return $dataSource;
}
}
Below code for Magento 2.3.X
<?php
namespace [vendor]\[module]\Ui\Component\Listing\Column;
use Magento\Framework\UrlInterface;
use Magento\Framework\View\Element\UiComponent\ContextInterface;
use Magento\Framework\View\Element\UiComponentFactory;
use Magento\Ui\Component\Listing\Columns\Column;
class Actions extends Column {
/** Url path */
const URL_PATH_EDIT = '[router]/[controller]/edit';
const URL_PATH_DELETE = '[router]/[controller]/delete';
const URL_PATH_VIEW = '[router]/[controller]/view';
protected $actionUrlBuilder;
protected $urlBuilder;
public function __construct(
ContextInterface $context,
UiComponentFactory $uiComponentFactory,
UrlInterface $urlBuilder,
array $components = [],
array $data = []
) {
$this->urlBuilder = $urlBuilder;
parent::__construct($context, $uiComponentFactory, $components, $data);
}
public function prepareDataSource(array $dataSource) {
if (isset($dataSource['data']['items'])) {
foreach ($dataSource['data']['items'] as & $item) {
$name = $this->getData('name');
if (isset($item['primary_id'])) {
$item[$name]['edit'] = [
'href' => $this->urlBuilder->getUrl(
self::URL_PATH_EDIT, [
'primary_id' => $item['primary_id']
]
),
'label' => __('Edit')
];
$item[$name]['delete'] = [
'href' => $this->urlBuilder->getUrl(
self::URL_PATH_DELETE, [
'primary_id' => $item['primary_id']
]
),
'label' => __('Delete'),
'confirm' => [
'title' => __('Delete "${ $.$data.title }"'),
'message' => __('Are you sure you wan\'t to delete a "${ $.$data.title }" record?')
]
];
$item[$name]['preview'] = [
'href' => $this->urlBuilder->getUrl(
self::URL_PATH_VIEW, [
'primary_id' => $item['primary_id']
]
),
'label' => __('View')
];
}
}
}
return $dataSource;
}
}