WTM默认生成的数据模板不会携带业务逻辑,这个需要我们自己去编写。现在 比如生成了一个订单数据列表OrderListVM,里面包含增删改查导入导出等操作,但是业务功能需要增加一个审核操作。首先在InitGridAction中增加了一个审核操作:
this.MakeAction("Order","Audit","审核","审核",GridActionParameterTypesEnum.SingleId,"Order").SetShowInRow().SetHideOnToolBar().SetBindVisiableColName("CanOpr").SetOnClickScript("OrderAudit")
通过SetBindVisiableColName来绑定CanOpr列的值是否显示。
在InitGridHeader中添加对应的CanOpr列:
this.MakeGridHeader(x => "CanOpr").SetFormat((a, b) =>
{
if (a.AuditStatus == PublicEnum.AuditStatus.NoAudit)
{//如果没审核就返回true字符串,这样审核操作就会显示
return "true";
}
return "false";
}).SetHide();
添加之后,也设置了SetHide(),在页面上看, 挺正常的 。 但是再点击了刷选列的时候,居然也出现了CanOpr这个列,一勾选就全是true false,这些都是我们不想要的。
我们可以通过修改wwwroot/layui/lay/modules/table.js中的代码来去掉筛选列中的CanOpr列。(table.js在WTM项目中都是压缩过的代码,如果嫌眼花就下载源代码覆盖这个文件就好)
打开table.js筛选LAYTABLE_COLS,总共找到两个,在最后一个记录中找到i.eachCols(function(t,i){
在这一处添加i.title这个条件,最后如图:
这样设置后清除缓存刷新列表,打开筛选列后就没有CanOpr这个列选择了。需要注意,CanOpr列不能设置Title,就是不能在MakeGridHeader后调用SetTitle("CanOpr")