Документация для разработчиков
Темная тема

Предыдущая реализация main.ui.grid

Здесь описана предыдущая реализация компонента main.ui.grid и его параметры.

Описание

Компонент main.ui.grid (классы Bitrix\Main\Grid) выводит информацию в табличной форме. Является системным компонентом.

В физической структуре его можно найти в папке /bitrix/components/bitrix/main.ui.grid.

Параметры

ПараметрТипОписание
GRID_IDstringИдентификатор грида.
HEADERSarrayМассив с заголовками столбцов таблицы.

Простейший пример массива

ROWSarrayМассив с значениями По ключу data передаём массив с данными ячеек. таблицы и действиями По ключу actions передаем массив действий. в контекстном меню.

Простейший пример массива

TOTAL_ROWS_COUNTstringКоличество отфильтрованных элементов в таблице всего.
SHOW_ROW_CHECKBOXESboolПоказывать чекбоксы у строк для множественных действий.
NAV_OBJECTobjectОбъект для постраничной навигации.
AJAX_MODEstringАктивирует режим ajax.
AJAX_IDstringAjax ID берется из компонента фильтра.
PAGE_SIZESarrayМассив для выбора кол-ва элементов на странице.
AJAX_OPTION_JUMPstringЕсли пользователь совершит AJAX-переход, то при установленой опции по окончании загрузки произойдет прокрутка к началу компонента.
SHOW_CHECK_ALL_CHECKBOXESboolПоказывать "Выбрать все".
SHOW_ROW_ACTIONS_MENUboolОтображение меню действий для элемента таблицы.
SHOW_GRID_SETTINGS_MENUboolОтображение кнопки настройки списка.
SHOW_NAVIGATION_PANELboolОтображать панель навигации.
SHOW_PAGINATIONboolОтображать кнопки постраничной навигации ("Предыдущая", "Все", "Следующая").
SHOW_SELECTED_COUNTERboolПоказывать "Выбрано элементов".
SHOW_TOTAL_COUNTERboolПоказывать "Всего элементов".
SHOW_PAGESIZEboolВыводить выбор количества элементов на странице.
ACTION_PANELarrayОпределяет панель групповых действий (передаётся массив с кнопками и действиями).
SHOW_ACTION_PANELboolРазрешает отображение панели групповых действий Панель отобразится только если сама панель определена в параметре ACTION_PANEL. .
ALLOW_COLUMNS_SORTboolПараметр разрешает или запрещает сортировку колонок перетаскиванием (т.е. менять колонки местами перетаскиванием мышью).
ALLOW_COLUMN_RESIZEboolРазрешает или запрещает изменение ширины колонок.
ALLOW_HORIZONTAL_SCROLLboolБудет доступна горизонтальная прокрутка.
ALLOW_SORTboolРазрешить сортировку.
ALLOW_PIN_HEADERboolРазрешать закреплять шапку таблицы.
AJAX_OPTION_HISTORYboolКогда пользователь выполняет AJAX-переходы, то при включенной опции можно использовать кнопки браузера "Назад" и "Вперед".
ENABLE_COLLAPSIBLE_ROWSboolВключает сворачивание/разворачивание строк.
ENABLE_FIELDS_SEARCHbool Включает возможность фильтрации по названию поля.
HEADERS_SECTIONSarrayМассив для группировки полей в main.ui.filter вида:
array (
 0 =>
 array (
	'id' => 'DEAL',
	'name' => 'Мое название',
	'default' => true, - в эту секцию скидываем все поля, у которых явно не задана привязка к секции
	'selected' => true, - секция показывается по умолчанию
 ),
 1 =>
 array (
	'id' => 'CONTACT',
	'name' => 'Контакт',
	'selected' => true,
 ),
 2 =>
 array (
	'id' => 'COMPANY',
	'name' => 'Компания',
	'selected' => true,
 ),
)

С версии 22.500.0 добавлена возможность выводить всплывающие подсказки у секций колонок:

[
	'id' => 'PRODUCT',
	'name' => 'Товар',
	'hint' => 'Свойства товара для вывода в таблице', // текст всплывающей подсказки
	'hintInteractivity' => true, // если true, то с подсказкой можно взаимодействовать (выделять текст, 
	// нажимать на кнопки в подсказке); если false, то при снятии курсора со значка ? подсказка исчезнет
	'hintHtml' => false, // если true, то текст подсказки выводится в формате html
	'selected' => true,
],

Пример вызова

<?
$grid_options = new Bitrix\Main\Grid\Options('report_list');
$sort = $grid_options->GetSorting(['sort' => ['ID' => 'DESC'], 'vars' => ['by' => 'by', 'order' => 'order']]);
$nav_params = $grid_options->GetNavParams();

$nav = new Bitrix\Main\UI\PageNavigation('report_list');
$nav->allowAllRecords(true)
	->setPageSize($nav_params['nPageSize'])
	->initFromUri();

$APPLICATION->IncludeComponent(
	'bitrix:main.ui.grid',
	'',
	[
	'GRID_ID' => 'report_list', 
	'COLUMNS' => [
		['id' => 'ID', 'name' => 'ID', 'sort' => 'ID', 'default' => true], 
		['id' => 'DATE', 'name' => 'Дата', 'sort' => 'DATE', 'default' => true], 
		['id' => 'AMOUNT', 'name' => 'Сумма', 'sort' => 'AMOUNT', 'default' => true], 
		['id' => 'PAYER_INN', 'name' => 'ИНН Плательщика', 'sort' => 'PAYER_INN', 'default' => true], 
		['id' => 'PAYER_NAME', 'name' => 'Плательщик', 'sort' => 'PAYER_NAME', 'default' => true], 
		['id' => 'IS_SPEND', 'name' => 'Тип операции', 'sort' => 'IS_SPEND', 'default' => true], 
		
	'ROWS' => $list,
	'SHOW_ROW_CHECKBOXES' => true, 
	'NAV_OBJECT' => $nav, 
	'AJAX_MODE' => 'Y', 
	'AJAX_ID' => \CAjax::getComponentID('bitrix:main.ui.grid', '.default', ''), 
	'PAGE_SIZES' => [ 
		['NAME' => "5", 'VALUE' => '5'], 
		['NAME' => '10', 'VALUE' => '10'], 
		['NAME' => '20', 'VALUE' => '20'], 
		['NAME' => '50', 'VALUE' => '50'], 
		['NAME' => '100', 'VALUE' => '100'] 
		], 
	'AJAX_OPTION_JUMP'          => 'N', 
	'SHOW_CHECK_ALL_CHECKBOXES' => true, 
	'SHOW_ROW_ACTIONS_MENU'     => true, 
	'SHOW_GRID_SETTINGS_MENU'   => true, 
	'SHOW_NAVIGATION_PANEL'     => true, 
	'SHOW_PAGINATION'           => true, 
	'SHOW_SELECTED_COUNTER'     => true, 
	'SHOW_TOTAL_COUNTER'        => true, 
	'SHOW_PAGESIZE'             => true, 
	'SHOW_ACTION_PANEL'         => true, 
	'ACTION_PANEL'              => [ 
		'GROUPS' => [ 
			'TYPE' => [ 
				'ITEMS' => [ 
					[ 
						'ID'    => 'set-type', 
						'TYPE'  => 'DROPDOWN', 
						'ITEMS' => [ 
							['VALUE' => '', 'NAME' => '- Выбрать -'], 
							['VALUE' => 'plus', 'NAME' => 'Поступление'], 
							['VALUE' => 'minus', 'NAME' => 'Списание'] 
							] 
					], 
				], 
			] 
		], 
	], 
	'ALLOW_COLUMNS_SORT'        => true, 
	'ALLOW_COLUMNS_RESIZE'      => true, 
	'ALLOW_HORIZONTAL_SCROLL'   => true, 
	'ALLOW_SORT'                => true, 
	'ALLOW_PIN_HEADER'          => true, 
	'AJAX_OPTION_HISTORY'       => 'N' 
	]
);?>

Добавление кнопок

Для добавления кнопок в ACTION_PANEL удобно использовать класс \Bitrix\Main\Grid\Panel\Snippet, который позволяет быстро создать какую-то типовую кнопку или действие для панели грида. Пример:

// Создаем экземпляр класса:
$snippets = new \Bitrix\Main\Grid\Panel\Snippet();

// С помощью нужного метода получаем уже готовую кнопку или действие.
// Например для кнопки "Удалить":
$removeButton = $snippets->getRemoveButton();


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
ononoki
Сообщение не промодерировано, возможны ошибки и неточности.
Параметры, чтобы добавить кнопку "Показать еще":
Код
'SHOW_MORE_BUTTON' => true, //передавать false, если CURRENT_PAGE = последняя страница
'ENABLE_NEXT_PAGE' => true,
'NAV_PARAM_NAME' => 'SHOW_MORE', //параметр приходит в $_REQUEST, нужно передать в свой компонент и обработать для выборки данных
'CURRENT_PAGE' => $arResult['NAV']->getCurrentPage(),

2
Екатерина Сальникова
Сообщение не промодерировано, возможны ошибки и неточности.
Цитата
Роман Семёнов пишет:
сделайте нормальный пример - элементарной вещи

как создать кнопку "Применить" для групповых действий и навесить на нее свой обработчик
Например так
Код
$arResult["ACTION_PANEL"] = [
    'GROUPS' => [
        'TYPE' => [
            'ITEMS' => [
                [
                    'TYPE' => \Bitrix\Main\Grid\Panel\Types::BUTTON,
                    'ID' => "adduserfields",
                    'CLASS' => "apply",
                    'TEXT' => "Применить",
                    'ONCHANGE' => [
                        [
                            'ACTION' => Bitrix\Main\Grid\Panel\Actions::CALLBACK,
                            'DATA' => array(
                                array(
                                    'JS' => "adduserfields()",                                        )
                            )
                        ]
                    ]
                ],
            ],
        ]
    ],
];

1
Максим Мочнов
Сообщение не промодерировано, возможны ошибки и неточности.
В предыдущем сообщении массив - пример 1 элемента массива ROWS, конечно же
1
Максим Мочнов
Сообщение не промодерировано, возможны ошибки и неточности.
В ROWS можно передать ячейки со своим содержимым, в примере этого не указано; в базовом шаблоне они на всю ширину пойдут. Пример массива:
Код
$arRows = [
            'custom' => 'Контент ячейки',
            'parent_id' => 0//без этого не работает; id, наверное, можно и другой какой-то
            //ключей data и actions тут не надо
          ]
15
Роман Семёнов
Сообщение не промодерировано, возможны ошибки и неточности.
сделайте нормальный пример - элементарной вещи

как создать кнопку "Применить" для групповых действий и навесить на нее свой обработчик
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх