F7过滤
1.普通基本资料,或者业务单据表头的F7控件设置过滤的方法:
在EditUI.java类的onload方法中加入如下代码:
EntityViewInfo entity = new EntityViewInfo();
FilterInfo filter = new FilterInfo();
//设置过滤条件
filter .getFilterItems().add(new FilterItemInfo(“过滤条件字段”,值,CompareType.EQUALS));
entity .setFilter(filter);
//F7控件设置实体视图信息
prmtF7.setEntityViewInfo(entity);
2.分录中的F7设置过滤条件:
大家知道,分录中的F7控件我们没办法直接获得控件对象。所以要在EditUI.java中的onload方法中通过,
以单头库存组织过滤分录仓库字段为例子
protected com.kingdee.bos.ctrl.extendcontrols.KDBizPromptBox prmwarehouse; //定义一个全局控件
prmtstorageOrgUnit.addDataChangeListener(new DataChangeListener (){
public void dataChanged(DataChangeEvent datachangeevent) {
Object OrgUnit = prmtstorageOrgUnit.getValue();
if(OrgUnit!=null){
StorageOrgUnitInfo Info =(StorageOrgUnitInfo)OrgUnit;
EntityViewInfo entity = new EntityViewInfo();
FilterInfo filter = new FilterInfo();
filter.getFilterItems().add(new FilterItemInfo("whState","1",CompareType.EQUALS));
filter.getFilterItems().add(new FilterItemInfo("storageOrg.id",Info.getId(),CompareType.EQUALS));
entity.setFilter(filter);
prmwarehouse = (KDBizPromptBox)(kdtEntry.getColumn("warehouse").getEditor().getComponent());
prmwarehouse.setEntityViewInfo(entity);
}
}
});
3.左树右表结构中表头的F7控件(调用的是基础资料的ListUI对象):
假设现在有一个左树又表的基础资料的表头有一个F7控件,这个控件引用了一个名字为BaseListUI.ui的基础资料,这个被引用的基础资料对应了两个JAVA类,名为BaseListUI.java和BaseEditUI.java。找到这两个类,我们接下来实现过滤:
第一步:BaseListUI.java覆盖父类的setF7Use(true,ctx)方法,这个方法有两个参数,一个是boolean,一个是Map。代码如下: // 声明一个boolean类型的全局变量
boolean isF7ListUI = false;
// 覆盖方法setF7Use(true,ctx)
public void setF7Use(boolean isF7Use,Map ctx){
isF7ListUI = true;
supper.setF7Use(isF7Use,ctx);
}
// 覆盖getDefaultEntityViewInfo()方法
protected EntityViewInfo getDefaultEntityViewInfo(){
if(isF7ListUI){
EntityViewInfo entity = new EntityViewInfo();
FilterInfo filter = new FilterInfo();
filter.getFilterItems().add(new FilterItemInfo("过滤条件字段", 值, CompareType.EQUALS));
entity.setFilter(filter);
return entity;
}else{
return super.getDefaultEntityViewInfo();
}
}
4、SQL语句过滤
/**
* 过滤仓库
*/
void addFilterOfWareHouse() {
EntityViewInfo warehouseView = new EntityViewInfo();
FilterInfo warehouseFilter = new FilterInfo();
Object obj = prmtstorageOrgUnit.getValue();
String orgID = null;
String sql = null;
if (obj != null) {
orgID = ((StorageOrgUnitInfo) obj).getId().toString();
sql = "select FID from T_DB_WAREHOUSE where FID in( select FWarehouseID from T_DB_SOAccreditWH where FstorageOrgID='" + orgID + "')";
warehouseFilter.getFilterItems().add(new FilterItemInfo("id", sql, CompareType.INNER));
}
warehouseFilter.getFilterItems().add(new FilterItemInfo("whState", "1"));
warehouseView.setFilter(warehouseFilter);
prmtwareHouse.setEntityViewInfo(warehouseView);
}
5、合并过滤条件
filter.setMaskString("(#0 or #1) and #2 ");
6、F7重置(解决第2次过滤可以,第一次不行的问题)
prmtpm.setEntityViewInfo(view);
//放于setEntityViewInfo之后,参考TargetAchievementAccruePolicyEditUI.java
prmtpm.getQueryAgent().resetRuntimeEntityView();
F7过滤
本文2024-09-16 22:21:07发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-47583.html