添加增删查改功能
插件提供了根据数据库中的数据快速构建后台增删查改页面的功能,构建时需要使用CrudAdminAppControllerBase
。
以下的例子支持自动分页,自动提供和检查权限,自动生成添加编辑删除和恢复按钮。
添加src\Controllers\ExampleCrudController.cs
[ExportMany]
public class ExampleCrudController : CrudAdminAppControllerBase<ExampleTable, long> {
// Name和Url必须提供
public override string Name { get { return "ExampleCRUDApp"; } }
public override string Url { get { return "/admin/example_crud_app"; } }
// 可选,如果需要指定图标颜色和内容
public override string TileClass { get { return "tile bg-navy"; } }
public override string IconClass { get { return "fa fa-rocket"; } }
// 权限一般不需要手动指定,会根据名称生成"查看","修改","删除","永久删除"权限
// 获取添加和编辑使用的表单
protected override IModelFormBuilder GetAddForm() { return new Form(); }
protected override IModelFormBuilder GetEditForm() { return new Form(); }
// 获取搜索列表使用的处理器
protected override IAjaxTableHandler<ExampleTable, long> GetTableHandler() { return new TableHandler(); }
public class TableHandler : AjaxTableHandlerBase<ExampleTable, long> {
public override void BuildTable(AjaxTableBuilder table, AjaxTableSearchBarBuilder searchBar) {
table.StandardSetupFor<ExampleCrudController>(); // 设置表格
searchBar.StandardSetupFor<ExampleCrudController>("Name"); // 设置搜索栏
}
public override void OnQuery(
AjaxTableSearchRequest request, ref IQueryable<ExampleTable> query) {
if (!string.IsNullOrEmpty(request.Keyword)) {
query = query.Where(q => q.Name.Contains(request.Keyword)); // 按关键词过滤
}
}
public override void OnSelect(
AjaxTableSearchRequest request, IList<EntityToTableRow<ExampleTable>> pairs) {
foreach (var pair in pairs) {
pair.Row["Id"] = pair.Entity.Id; // 选择Id
pair.Row["Name"] = pair.Entity.Name; // 选择名称
pair.Row["CreateTime"] = pair.Entity.CreateTime.ToClientTimeString(); // 选择创建时间
pair.Row["Deleted"] = pair.Entity.Deleted ? EnumDeleted.Deleted : EnumDeleted.None; // 选择删除状态
}
}
public override void OnResponse(
AjaxTableSearchRequest request, AjaxTableSearchResponse response) {
response.Columns.AddIdColumn("Id").StandardSetupFor<ExampleCrudController>(request); // Id列
response.Columns.AddNoColumn(); // 序号列,页序号*页数量+数据位置(从1开始)
response.Columns.AddMemberColumn("Name", "45%"); // 名称列
response.Columns.AddMemberColumn("CreateTime"); // 添加时间列
response.Columns.AddEnumLabelColumn("Deleted", typeof(EnumDeleted)); // 删除状态列
response.Columns.AddActionColumn().StandardSetupFor<ExampleCrudController>(request); // 操作列
}
}
public class Form : EntityFormBuilder<ExampleTable, long, Form> {
[Required]
[StringLength(100)]
[TextBoxField("Name", "Please enter name")]
public string Name { get; set; }
protected override void OnBind(ExampleTable bindFrom) {
Name = bindFrom.Name; // 绑定名称
}
protected override object OnSubmit(ExampleTable saveTo) {
saveTo.Name = Name; // 设置名称
if (saveTo.Id <= 0) {
saveTo.CreateTime = DateTime.UtcNow; // 设置创建时间
}
return this.SaveSuccessAndCloseModal();
}
}
}
效果如图
自动生成的权限如图