前面介绍了PasteForm作为管理端表格和表单显示的新思路,在一次改版旧项目的时候,遇到新的需求,那就是批量操作!
一般情况下,我们的表格数据大概如下图这样显示
如果要引入批量操作,一般的需求就是选择,也就是选择数据项的ID,作为一个IDS集合,然后执行业务逻辑!
所以PasteForm的思路是,保持PasteForm的文件内容和结构,然后把业务代码在公共函数中处理,比如../lib/api.js中
如上图,表示给这个表添加了2个批量操作,一个是批量启用,一个是批量禁用
那么要显示数据前面的checkbox和上面的“批量启动”,”批量禁用”,在dto中是如何实现的?
在对应的dto中的clss添加对应的属性bitch
///<summary>
///测试表 用于测试CURD的表
///</summary>
[PasteBitch("批量启用", "global_bitch_state(this,1)")]
[PasteBitch("批量禁用", "global_bitch_state(this,0)")]
public class TestTableListDto : EntityDto<int>
{
///<summary>
///姓名 模拟短文本输入
///</summary>
public string Name { get; set; }
}
注意看上面的global_bitch_state,这个就是你自己定义的函数了,在案例项目中,我是把global_bitch_state写入到../lib/api.js中的,这样pasteform里面的代码就不会被污染了!
我们来看看,PasteBitch里面是怎么定义的
/// <summary>
/// 批量操作
/// </summary>
public class PasteBitchAttribute : ColumnDataTypeAttribute
{
/// <summary>
///
/// </summary>
/// <param name="_name"></param>
/// <param name="_script"></param>
/// <param name="_iconfont"></param>
public PasteBitchAttribute(string _name, string _script, string _iconfont = "")
{
base.Name = "bitch";
base.Args1 = _name;
base.Args2 = _script;
base.Args3 = _iconfont;
}
}
会发现其实和menu的设定是一样的
再看看文档说明
用户表格数据中的批量操作,示例<input type="button" class="btn btntool" value="args1" onclick="args2">
字段 | 类型 | 示例 | 说明 |
---|---|---|---|
args1 | 字符 | 编辑 | 按钮的名称 |
args2 | 字符 | open_view(<%:=item.id%>); | onclick事件的代码 |
args3 | 字符 | Hui-iconfont-menu | 暂未实现,预留给图标用 |
args4 | 字符 | 预留字段 |
至于样式啥的,后续再修改哈!