员工排班查询里面的列是非常多的。如果在员工排班查询列表里面显示太多的列就会显得很拥挤。同时有些客户公司是单业务组织架构,往往希望可以只显示业务组织或者行政组织,这样只看一个也不会太拥挤同时也能看到更多的信息。接下来我将演示如果在员工排班查询列表中如果隐藏列。 我们先打开员工排班查询列表的debug模式来调试js。我们就会来到第一个分水岭,根据展示的列表不同(横向排班,纵向排班,未排班列表),走到不同的代码中。
先看一下纵向列表,会调用
listWorkShift.renderListTable
来加载列表,而在这个方法里面我们需要重点关注
_resetColContainer(begin, end);
因为我们的列表都是基本colmodel来生成对应的列的。而该方法的语意就是设置col容器,有可能与设置列表中的列有关。进入该方法看到如下图所示:
现在关注的是纵向列表,明显就是这个方法_getVerShiftColModel()获取colmodel 的,因此进入该方法。果不其然,里面都是对应的一些列属性,此时如果我们需要隐藏业务组织的话,则要如下图所示添加一个hidden:true 上去,表示隐藏该列。
最后的结果:
如果需要对未排班列表进行列隐藏,则需要关注_getNoShiftColModel()
对其中的colmodel添加hidden:true 即可。
而对横向排班来说,他的代码执行则会走方法that.doVerticalRenderDataGrid();
进入该方法,则会看到如下图所示:
我们就需要关注colmodel对应的实现,看到是这个方法colModel_function()。点进去一看,也是有很多的colmodel,修改即可。
我们可以通过在colmodel里面加入hidden:true来实现隐藏列,同时如果想实现冷冻列的效果的话,可以添加frozen : true。
而colmodel里面列数据都是来源于请求的返回结果,返回的数据有什么,才能够去显示或者去隐藏什么。
如图所示,纵向列表返回结果如下图:
说明纵向列表最多能够显示这些个列,而有一些列是我们列表中没有的,我们可以在对应的colmodel和colnames中添加对应的字段就可以显示出这个列了。如果希望显示除上图所示之外的字段的话,则需要重写后端代码(不建议操作)
这里就是我介绍关于员工排班查询隐藏列的方法了,有需要探讨或者纠正的地方可以下方评论!
推荐阅读