【特殊需求实现研究】隐藏列表界面的设置按钮原创
金蝶云社区-阿丁编程
阿丁编程
8人赞赏了该文章 1,303次浏览 未经作者许可,禁止转载编辑于2022年09月30日 18:26:57

背景:

        最近有几个小伙伴问了能不能隐藏列表的设置按钮,于是做了一下研究,没有找到相关设置可以通过配置直接隐藏该按钮。

        为什么需要隐藏列表界面的设置按钮呢?

        因为有些特殊需求,在插件里使用了列表的数据,该插件开发的时候能正常取值,然后稳定上线后有些用户隐藏了某一列,会导致插件取不到值,自然就报错或者业务逻辑执行错误。

        还有就是领导要求不能设置,不要问为什么,领导乐意,就是要隐藏。


解决方案:


一、扩展设置动态表单,编写插件,根据设置的单据,提示用户不能进行设置,可以说明一下禁止设置的原因

找到 ide_listfieldscont 这个动态表单进行扩展,添加插件,插件代码如下:

@Override
public void preOpenForm(PreOpenFormEventArgs e) {
    super.preOpenForm(e);
    Object entityId = e.getFormShowParameter().getCustomParam("entityId");
    if(entityId != null && "dz_receiveconfirm".equals(entityId)) {
        e.setCancel(true);
        e.setCancelMessage("【物资到货确认单】不允许对列表进行设置");
    }
}

点击列表设置按钮效果如下:

image.png


二、直接隐藏,编写列表插件

@Override
public void afterBindData(EventObject e) {
   super.afterBindData(e);
   // 设置列表样式隐藏设置按钮
   Map<String, Object> config = new HashMap<String, Object>();
   config.put("cstyles", "eyJ0eXBlIjoiMCIsImNvbnRlbnQiOiIkID4gZGl2ID4gZGl2ID4gZGl2ID4gZGl2ID4gZGl2ID4gZGl2IC50YWJsZS1jb25maWctb3BlcmF0aW9uIHsgZGlzcGxheTogbm9uZTsgfSJ9");
   this.getView().updateControlMetadata("flexpanelap1", config);
}

只需要列表插件实现上面的功能即可隐藏设置按钮,用户看不到,也就操作不了了。

image.png

至于为什么这么写,说来话长,如果需要了解研究过程,可以给文章点个赞,点赞超过6个,下次有空可以考虑出一章研究过程文章。j_0028.gif





看到某位道友的问题答复,发现报表的设置按钮有现成的方法可以直接设置隐藏,代码如下

public class ReportFormPlugin extends AbstractReportFormPlugin {
    @Override
    public boolean verifyQuery(ReportQueryParam queryParam) {
        ReportList reportllistap = (ReportList)this.getControl("reportlistap");
        reportllistap.setHasSettingRow(Boolean.FALSE.booleanValue());
        return true;
    }
}

只需要在报表的表单插件里,添加如上代码即可隐藏设置按钮,其他事件里试了没有这个事件里设置的效果好,大家可以可以自行尝试后分享。

等有空了再按这个思路研究看看正常单据列表是不是也可以设置相关属性直接隐藏







全文完!

j_0003.gif


这里有个苍穹开发讨论的QQ群,欢迎大家加入讨论开发问题:1002628306

入群问题答案:AbstractOperationServicePlugIn

图标赞 8
8人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0