EAS BOS F7 过滤 动态 级联 详细使用

文通过几个小例子来讲解金蝶EAS BOS 开发F7控件的过滤使用;

1、新建一张业务单据,存在两个F7控件,基本库位属于仓库,只有选择了仓库才,能确定库位。发布业务单元,如下:

2、打开JAVA视图,找到EDITUI JAVA文件,新增方法

  a)首先为仓库添加过滤,prmtwarehouse为仓库F7,并添加监听事件。

 
	private void initF7() {
		EntityViewInfo entityView = new EntityViewInfo();
		FilterInfo filter = new FilterInfo();
		 filter.getFilterItems().add(new
		 FilterItemInfo("number","A2%",CompareType.LIKE));
		entityView.setFilter(filter);
		prmtwarehouse.setEntityViewInfo(entityView);
		prmtwarehouse.addDataChangeListener(new DataChangeListener() {
			public void dataChanged(DataChangeEvent e) {
				datachangeAction_dataChanged(e);
			}
		});
	}

  b)为库位添加过滤,prmtlocationhouse为库位F7;并根据F7是否存在可选项,进行必输、默认值设置;

    private void locationhouseF7(String warehouseid) {
		EntityViewInfo entityView = locationhouseF7Judge(warehouseid);
		prmtlocationhouse.setEntityViewInfo(entityView);
		try {
			LocationCollection local = LocationFactory.getRemoteInstance()
					.getLocationCollection(entityView);

			if (local.size() > 0) {
				prmtlocationhouse.setRequired(true);
				prmtlocationhouse.setValue(local.get(0));
			} else {
				prmtlocationhouse.setRequired(false);
			}
		} catch (BOSException e1) {
			e1.printStackTrace();
		}
	}
	private EntityViewInfo locationhouseF7Judge(String warehouseid) {
		EntityViewInfo entityView = new EntityViewInfo();
		FilterInfo filter = new FilterInfo();
		filter.getFilterItems().add(
				new FilterItemInfo("WAREHOUSE.id", warehouseid,
						CompareType.EQUALS));
		entityView.setFilter(filter);
		return entityView;
	}

  c)新增仓库F7更新事件方法

	public void datachangeAction_dataChanged(DataChangeEvent e) {
		try {
			Object source = e.getSource();

			if ((e.getOldValue() != null)
					&& (e.getOldValue().equals(e.getNewValue()))) {
				return;
			}
			if (this.prmtwarehouse.equals(source)) {
				if (e.getNewValue() == null) {
					prmtlocationhouse.setValue(null);
					locationhouseF7(null);
				} else {
					String warehouseid = ((WarehouseInfo) e.getNewValue())
							.getId().toString();
					prmtlocationhouse.setValue(null);
					locationhouseF7(warehouseid);
				}

			}
		} catch (Exception exc) {
			handUIException(exc);
		}
	}

  d)重写verifyInput(ActionEvent e)方法进行必输项验证

@Override
	protected void verifyInput(ActionEvent e) throws Exception {
		EntityViewInfo entityView;
		if(com.kingdee.bos.ui.face.UIRuleUtil.isNull(editData
				.getWarehouse())){
			entityView = locationhouseF7Judge(null);
		}else{
			entityView = locationhouseF7Judge(editData
					.getWarehouse().getId().toString());
		}
		
		try {
			LocationCollection local = LocationFactory.getRemoteInstance()
					.getLocationCollection(entityView);
			if (local.size() > 0) {
				if (com.kingdee.bos.ui.face.UIRuleUtil.isNull(editData
						.getLocationhouse())) {
					throw new com.kingdee.eas.common.EASBizException(
							com.kingdee.eas.common.EASBizException.CHECKBLANK,
							new Object[] { "库位" });

				}
			}
		} catch (BOSException e1) {
			e1.printStackTrace();
		}
	}

  e)在EDITUI构造方法中调用创建的方法

  

public F7FilterEditUI() throws Exception {
		super();
		initF7();
                locationhouseF7(null);
	}        

 3、完成后,刷新启动服务,即可实现F7动态级联,并实现动态改必输校验。

 -----------------------------------------

附加一个自定义Query小知识:只需要将需要重新绑定的Query,重新set一下就可以了。

private void initF7() {
		this.prmtwarehouse.setQueryInfo("com.kingdee.eas.demo.f7.app.warehouseUserDefine");		
     。。。。。。      
}

 PS:自定义Query的一个注意事项,不能设置id不可见,不然选择时,会提示报错。

 

转载于:https://www.cnblogs.com/simple-point/p/9309888.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值