一、有如下场景:根据库存组织过滤仓库。这种场景需要用到 F7字段的 监听方法
F7字段监听方法代码如下:
/**
* 库存组织F7监听
*/
public void setStorageListener() {
// 通过F7控件名称,点出 addDataChangeListener() 监听方法,接着重写 dataChanged() 方法。最后在该方法中写相关逻辑。
prmtstorageOrg.addDataChangeListener(new DataChangeListener(){
@Override
public void dataChanged(DataChangeEvent arg0) {
//获取选择的storage库存组织的ID值
String storOrgID = ((IPropertyContainer) prmtstorageOrg.getValue()).getString("id");
//调用仓库过滤方法,传入库存组织的ID值
warehouseFilter(storOrgID)
}
});
}
仓库的过滤代码:
/**
* 仓库过滤
* @param id
*/
public void warehouseFilter(String storOrgID) {
EntityViewInfo view = new EntityViewInfo(); //新定义视图
FilterInfo filter = new FilterInfo(); //设置过滤条件
// storageOrg.id :是仓库F7Query中的字段属性。通过这个字段可以查出所属库存组织的所有仓库信息
filter.getFilterItems().add(new FilterItemInfo("storageOrg.id", storOrgID, CompareType.EQUALS));
view.setFilter(filter);
// 如果是分录上面的仓库字段,就需要获取KDBizPromptBox对象,然后用.setEntityViewInfo(view)
KDBizPromptBox prmtWarehouse = (KDBizPromptBox) kdtEntrys.getColumn("warehouse").getEditor().getComponent();
// 如果是单据头上面的仓库字段,就直接执行下面这行代码
prmtWarehouse.setEntityViewInfo(view);
}
二、上面两个代码片段,就实现了:根据库存组织过滤仓库场景。这种业务场景还有许多,但像这种情况都是大同小异的,具体的实现方法,就根据不同的需求去实现。
注意:setStorageListener() 该方法需要放入 onLoad() 方法中,不然无法生效。
三、上述全是个人理解。有不足的地方或是不对的地方,望谅解!