В библиотеке Element Plus для работы с таблицами
(el-table) предусмотрена возможность группировки столбцов с
помощью компонента <el-table-column>. Это позволяет
создавать сложные структуры таблиц, где один столбец может быть
родительским и включать несколько дочерних, объединяя данные по
логической или визуальной структуре.
Каждый столбец таблицы определяется через компонент
<el-table-column>, который может содержать следующие
ключевые свойства:
prop — имя свойства объекта данных, отображаемого в
столбце.label — заголовок столбца.width — фиксированная ширина столбца.align — выравнивание текста (left,
center, right).Для создания группировки столбцов необходимо вложить один
<el-table-column> в другой. Родительский столбец не
требует свойства prop, так как сам по себе он не отображает
данные, а служит контейнером для дочерних столбцов.
Пример структуры:
<el-table :data="tableData" border>
<el-table-column label="Имя и контакты">
<el-table-column prop="name" label="Имя" width="120"></el-table-column>
<el-table-column prop="email" label="Email" width="200"></el-table-column>
</el-table-column>
<el-table-column label="Адрес">
<el-table-column prop="city" label="Город" width="120"></el-table-column>
<el-table-column prop="country" label="Страна" width="120"></el-table-column>
</el-table-column>
</el-table>
В этом примере “Имя и контакты” и “Адрес” выступают как родительские столбцы, объединяющие два дочерних. На рендере таблицы создается визуальная группировка, где дочерние столбцы выровнены под общим заголовком.
Element Plus позволяет создавать многуровневые группы столбцов, что особенно полезно при работе с финансовыми отчетами или аналитикой, где данные логически объединяются в несколько уровней.
<el-table :data="tableData" border>
<el-table-column label="Личные данные">
<el-table-column label="Контакты">
<el-table-column prop="name" label="Имя"></el-table-column>
<el-table-column prop="phone" label="Телефон"></el-table-column>
</el-table-column>
<el-table-column label="Адрес">
<el-table-column prop="city" label="Город"></el-table-column>
<el-table-column prop="country" label="Страна"></el-table-column>
</el-table-column>
</el-table-column>
</el-table>
Здесь создается трехуровневая иерархия:
Эта структура полностью поддерживается встроенным рендером Element Plus и корректно отображается в таблице с границами.
Для родительских и дочерних столбцов можно задавать индивидуальные стили. Ключевые свойства:
align — выравнивание текста.header-align — выравнивание заголовка.class-name и header-class-name —
назначение пользовательских CSS-классов для ячеек и заголовков.Пример с выравниванием:
<el-table :data="tableData" border>
<el-table-column label="Личные данные" header-align="center">
<el-table-column prop="name" label="Имя" align="left"></el-table-column>
<el-table-column prop="email" label="Email" align="center"></el-table-column>
</el-table-column>
</el-table>
Родительский заголовок будет выровнен по центру, а дочерние — по указанным направлениям.
Группировка столбцов полностью совместима с другими функциональными
возможностями el-table:
sortable) — может
применяться как к родительским, так и к дочерним столбцам.filters) — фильтры работают
на уровне дочерних столбцов.fixed) —
дочерние столбцы внутри группы можно закреплять слева или справа.Пример комбинированного подхода:
<el-table :data="tableData" border>
<el-table-column label="Контакты" fixed="left">
<el-table-column prop="name" label="Имя" sortable></el-table-column>
<el-table-column prop="email" label="Email"></el-table-column>
</el-table-column>
<el-table-column label="Адрес">
<el-table-column prop="city" label="Город" sortable></el-table-column>
<el-table-column prop="country" label="Страна"></el-table-column>
</el-table-column>
</el-table>
prop не обязателен для родительских
столбцов. Если его указать, данные не будут корректно
отображаться.min-width.Группировка столбцов особенно полезна для:
Правильная структура группированных столбцов повышает читаемость больших таблиц и облегчает взаимодействие пользователя с данными.