AdminTable 组件
概述
AdminTable 是系统中最核心的通用数据表格组件,基于 BootstrapBlazor 的 Table<TItem> 组件扩展而来,封装了增删改查、分页排序、搜索筛选、导入导出、数据权限、树形展示等全套功能。系统中所有后台管理页面几乎都使用此组件实现。
功能特性
- 支持数据的增删改查,自动处理分页和排序
- 支持 Excel 导入导出,带模板下载
- 支持树形表格展示(
IsTree),自动处理父子层级关系
- 内置数据权限控制(
UseDataPermission),自动过滤用户所属部门数据
- 支持简单搜索和高级搜索(多条件组合查询)
- 提供查询前、保存前后、删除前后、导入前后等生命周期事件
- 自动根据按钮权限(
[AdminButton])控制操作按钮的显隐
- 支持自定义编辑弹窗模板(
EditTemplate)
参数说明
类型参数
| 参数 |
说明 |
| TItem |
实体类型,必须实现 IEntity<TKey> 接口 |
| TKey |
主键类型 |
属性参数
| 参数 |
类型 |
说明 |
| IsTree |
bool |
是否为树形表格 |
| IsMultipleSelect |
bool |
是否启用多选 |
| ShowSearch |
bool |
是否显示搜索框 |
| ShowAdvancedSearch |
bool |
是否显示高级搜索按钮 |
| ShowExtendButtons |
bool |
是否显示扩展按钮 |
| ShowImportButton |
bool |
是否显示导入按钮 |
| ShowExportButton |
bool |
是否显示导出按钮 |
| UseDataPermission |
bool |
是否启用数据权限过滤 |
| EditDialogSize |
Size |
编辑弹窗尺寸 |
| IgnoreSearchColumns |
Expression |
指定忽略搜索的列 |
| GetParentId |
Func |
树形表格的父级 ID 委托 |
| OnBeforeQuery |
EventCallback |
查询前事件,用于追加 Include、Where 等 |
| OnBeforeSaveAsync |
EventCallback |
保存前事件,用于数据验证或预处理 |
| OnFinishSaveAsync |
EventCallback |
保存后事件,用于后续处理(如创建租户管理员) |
| OnBeforeDeleteAsync |
EventCallback |
删除前事件,用于级联加载或拦截 |
| OnBeforeImportAsync |
EventCallback |
导入前事件,用于自定义导入逻辑 |
使用示例
基本用法
<AdminTable TItem="SysUser" TKey="long"
ShowSearch ShowAdvancedSearch ShowExtendButtons
OnBeforeQuery="OnBeforeQuery"
OnBeforeSaveAsync="OnBeforeSaveAsync"
OnBeforeDeleteAsync="OnBeforeDeleteAsync">
<TableColumns>
<TableColumn @bind-Field="context.Username" Text="用户名" />
<TableColumn @bind-Field="context.Nickname" Text="昵称" />
<TableColumn @bind-Field="context.IsEnabled" Text="状态" />
</TableColumns>
</AdminTable>
树形表格
<AdminTable TItem="SysMenu" TKey="long" IsTree IsMultipleSelect
OnBeforeQuery="OnBeforeQuery" ... />
查询前追加 Include
private void OnBeforeQuery(AdminQueryEventArgs<SysUser> e)
{
e.Select.IncludeMany(a => a.Roles).Include(a => a.Org);
}
保存前验证
private async Task OnBeforeSaveAsync(AdminSaveEventArgs<SysUser> e)
{
if (await _repo.Select.Where(a => a.Username == e.Item.Username).AnyAsync())
{
await SwalService.Error("用户名已存在");
e.Cancel = true;
}
}
注意事项
- 使用数据权限时实体必须实现
IDataPermission 接口
- 导入文件大小默认限制为 5MB
- 树形表格需要设置
GetParentId 参数