VGTable

Динамические таблицы

Управление колонками

Изменение ширины, перестановка, скрытие и отображение колонок вместе с фиксированными краями.

Ширина, порядок, видимость и Fixed Columns

Потяните границу заголовка для изменения ширины, перетащите средний заголовок для нового порядка или скройте колонку через VGDropdown. ID и Действия фиксированы по краям: их можно растягивать, но нельзя перемещать и скрывать.

Настройки работают по стабильным data-field, поэтому сортировка и фиксированные края сохраняют правильные колонки.

Показывать колонки
ID Сотрудник Отдел Должность Почта Город Обновлено Действия
1 Сотрудник 1 Отдел 1 Специалист user1@example.ru Москва 23.09.2026 Открыть
2 Сотрудник 2 Отдел 2 Специалист user2@example.ru Казань 22.09.2026 Открыть
3 Сотрудник 3 Отдел 3 Руководитель user3@example.ru Москва 21.09.2026 Открыть
4 Сотрудник 4 Отдел 4 Специалист user4@example.ru Казань 20.09.2026 Открыть
5 Сотрудник 5 Отдел 1 Специалист user5@example.ru Москва 19.09.2026 Открыть
6 Сотрудник 6 Отдел 2 Руководитель user6@example.ru Казань 18.09.2026 Открыть
7 Сотрудник 7 Отдел 3 Специалист user7@example.ru Москва 17.09.2026 Открыть
8 Сотрудник 8 Отдел 4 Специалист user8@example.ru Казань 16.09.2026 Открыть
9 Сотрудник 9 Отдел 1 Руководитель user9@example.ru Москва 15.09.2026 Открыть
10 Сотрудник 10 Отдел 2 Специалист user10@example.ru Казань 14.09.2026 Открыть
11 Сотрудник 11 Отдел 3 Специалист user11@example.ru Москва 13.09.2026 Открыть
12 Сотрудник 12 Отдел 4 Руководитель user12@example.ru Казань 12.09.2026 Открыть
13 Сотрудник 13 Отдел 1 Специалист user13@example.ru Москва 11.09.2026 Открыть
14 Сотрудник 14 Отдел 2 Специалист user14@example.ru Казань 10.09.2026 Открыть
15 Сотрудник 15 Отдел 3 Руководитель user15@example.ru Москва 09.09.2026 Открыть
16 Сотрудник 16 Отдел 4 Специалист user16@example.ru Казань 08.09.2026 Открыть
HTML
<div id="table-columns-controls" class="vg-dropdown">
  <button type="button" data-vg-toggle="dropdown" data-placement="auto">Колонки</button>
  <div class="vg-dropdown-content">
    <div class="vg-dropdown-container">
      <label><input type="checkbox" data-vg-table-column="name" checked> Сотрудник</label>
      <label><input type="checkbox" data-vg-table-column="department" checked> Отдел</label>
      <button type="button" data-vg-table-columns-reset>Сбросить настройки</button>
    </div>
  </div>
</div>

<div class="vg-table-wrapper">
  <div class="vg-table-container">
    <table
      id="employees-table"
      class="vg-table vg-table-hovered"
      data-vg-table
      data-column-resize-enable="true"
      data-column-resize-min-width="80"
      data-column-resize-max-width="480"
      data-column-reorder-enable="true"
      data-column-visibility-enable="true"
      data-column-visibility-controls="#table-columns-controls"
      data-fixed-columns="left:id;right:actions"
      style="min-width: 88rem"
    >
      <thead>...</thead>
      <tbody>...</tbody>
    </table>
  </div>
</div>
JavaScript
const table = document.querySelector('#employees-table');
const instance = VGTable.getInstance(table);

instance.setColumnWidth('name', 260);
instance.moveColumn('department', 'position');
instance.setColumnVisible('email', false);
instance.resetColumns();

table.addEventListener('columnresize.vg.table', ({detail}) => console.log(detail));
table.addEventListener('columnreorder.vg.table', ({detail}) => console.log(detail));
table.addEventListener('columnvisibilitychange.vg.table', ({detail}) => console.log(detail));
CSS
/* Публичные переменные resize и drag-and-drop. */
#employees-table {
  --vg-table-columns-resize-line-color: var(--vg-primary);
  --vg-table-columns-drag-outline-color: var(--vg-primary);
}