Layui版本在设置表头操作列SetBindVisiableColName时,从筛选列中去除当前的逻辑列

发布于 2020-05-07 14:55:20

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")

0 条评论

发布
问题