附件字段如何隐藏按钮原创
金蝶云社区-陈来珍
陈来珍
3人赞赏了该文章 2,477次浏览 未经作者许可,禁止转载编辑于2022年10月11日 14:06:48

关键词:附件字段、隐藏按钮、预览、下载、重命名、删除

一、需求

有个单据(kded_testbill),暂存状态的附件字段,上传的附件不允许修改附件名称。即需要隐藏重命名的按钮。

image.png

二、思路与方案

默认暂存情况下”预览、下载、重命名、删除“都可见。新增状态如果需要隐藏”重命名“按钮。则需要考虑如下情况:

(1)打开已有的暂存状态的单据时,需要在afterBindData隐藏重命名按钮

(2)上传新的附件时,会恢复设置附件字段所有按钮可见,所以需要在值更新propertyChanged事件中重新隐藏”重命名“按钮

(3)保存时,也会恢复设置附件字段所有按钮可见,所以需要在操作后afterDoOperation事件中隐藏重命名按钮

三、实现过程

public class TestbillPlugin extends AbstractBillPlugIn {
@Override
	public void afterBindData(EventObject e) {
		setAttFileVisble();
		super.afterBindData(e);
	}
@Override
public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
		setAttFileVisble();
	super.afterDoOperation(afterDoOperationEventArgs);
}
	@Override
	public void propertyChanged(PropertyChangedArgs e) {
		if (e.getProperty().getName().equals("kded_attachmentfield")) {
			setAttFileVisble();
		}
		super.propertyChanged(e);
	}

	private void setAttFileVisble() {
		String billstatus = String.valueOf(this.getModel().getValue("billstatus"));
		if (billstatus.equals("A")) {
			AttachmentEdit attachmentfield = this.getControl("kded_attachmentfield");
			IClientViewProxy clientViewProxy = this.getView().getService(IClientViewProxy.class);
			DynamicObject dataEntity = this.getModel().getDataEntity();
			BindingContext bindingContext = new BindingContext(dataEntity, 0);
			//获取当前页面附件字段信息
			Object attachmentValue = attachmentfield.getBindingValue(bindingContext);
			if (attachmentValue == null || !(attachmentValue instanceof List)
					|| CollectionUtils.isEmpty((List) attachmentValue)) {
				// 附件字段数据为空,不处理可见性。
				return;
			}
			List<Map<String, Object>> attachmentDataList = (List<Map<String, Object>>) attachmentfield
					.getBindingValue(bindingContext);
			/*
			 * List<String> hiddenBtnList = new ArrayList<>();
			 * hiddenBtnList.add("print");//加入需要隐藏的自定义按钮标识
			 */
			for (Map<String, Object> attachmentMap : attachmentDataList) {
				// visible参数规则为数字组成,0代表不可见,1代表可见,按显示顺序设置,"预览,下载,重命名,删除”隐藏重命名直接设置成1101
				attachmentMap.put("visible", "1101");
				// 隐藏自定义按钮
				// attachmentMap.put("hiddenBtn",hiddenBtnList);
			}
			// 向前端发送指令更新附件属性。
			clientViewProxy.setFieldProperty("kded_attachmentfield", "v", attachmentDataList);
		}
	}
}

四、效果图

上传单据可以看到”重命名“按钮已隐藏。

image.png

五、开发环境版本

COSMICV4.0.014.0

六、参考资料

【开发平台】指导手册

学习成长中心

开发案例库


赞 3