AdminTable2组件使用指南
AdminTable2是一个基于Blazor和FreeSql的通用表格组件,提供了丰富的表格展示和操作功能。本文将详细介绍其使用方法。
基本用法
<AdminTable2 TItem="User">
<TableHeader>
<th>用户名</th>
<th>年龄</th>
<th>创建时间</th>
</TableHeader>
<TableRow Context="user">
<td>@user.Username</td>
<td>@user.Age</td>
<td>@user.CreateTime</td>
</TableRow>
</AdminTable2>主要特性
1. 基础配置
Title: 弹框标题PageSize: 分页大小,默认20IsQueryString: 是否将查询条件同步到URLBodyHeight: 表格主体高度,默认-1(自适应)
2. 功能开关
IsRemove: 开启删除功能IsRowRemove: 开启行内删除按钮IsAdd: 开启添加功能IsEdit: 开启编辑功能IsRefersh: 开启刷新功能IsSearchText: 开启文本搜索IsSingleSelect: 开启单选IsMultiSelect: 开启多选IsAutoSelectParent: 自动选中父节点IsConfirmEdit: 编辑时确认弹框IsConfirmRemove: 删除时确认弹框
3. 布局模式
Colspan: 一行显示几条记录,默认4TableTd99Width: 操作列宽度,默认160
4. 模板定制
TableHeader: 表头模板TableRow: 行模板TableTh1: 第一列表头模板TableTd1: 第一列内容模板TableTd99: 操作列模板EditTemplate: 添加/编辑弹框模板CardHeader: 卡片头部模板CardFooter: 卡片底部模板
5. 事件回调
InitQuery: 初始化查询条件OnQuery: 查询时触发OnEdit: 编辑时触发OnEditFinish: 编辑完成时触发OnRemove: 删除时触发OnSelectChanged: 选择变化时触发OnRowClick: 点击行时触发
高级用法
1. 树形表格
组件会自动识别实体中的树形关系(OneToMany),并支持树形展示:
public class Menu
{
public int Id { get; set; }
public string Name { get; set; }
public int? ParentId { get; set; }
public List<Menu> Children { get; set; }
}2. 自定义查询
<AdminTable2 TItem="User" OnQuery="@OnQuery">
...
</AdminTable2>
@code {
async Task OnQuery(AdminQueryEventArgs<User> args)
{
args.Select = args.Select.Where(a => a.Age > 18);
}
}3. 自定义编辑模板
<AdminTable2 TItem="User" EditTemplate="@EditTemplate">
...
</AdminTable2>
@code {
RenderFragment<User> EditTemplate = user => @<div>
<div class="form-group">
<label>用户名</label>
<input @bind="user.Username" class="form-control" />
</div>
<div class="form-group">
<label>年龄</label>
<input @bind="user.Age" class="form-control" />
</div>
</div>;
}4. 行内操作按钮
<AdminTable2 TItem="User" TableTd99="@TableTd99">
...
</AdminTable2>
@code {
RenderFragment<User> TableTd99 = user => @<div>
<button @onclick="@(() => HandleCustomAction(user))" class="btn btn-sm btn-info">
自定义操作
</button>
</div>;
}注意事项
- 实体类必须使用单一主键
- 编辑时会自动处理实体间的关联关系(OneToOne/OneToMany/ManyToOne)
- 树形表格模式下会自动禁用分页
- 建议在编辑模板中使用
@bind而不是@bind:event="oninput"以避免频繁刷新
最佳实践
- 合理使用模板定制,避免过度自定义
- 对于复杂查询,使用
OnQuery事件进行扩展 - 编辑模板建议使用表单验证
- 大量数据时注意设置
BodyHeight启用滚动 - 合理使用
IsConfirmEdit和IsConfirmRemove防止误操作
