Dynamics Ax隐藏高级查询中的数据源和条件
在“高级查询”窗体中 默认列出了窗体上与主数据表关联的所有表,如果不想要某个表或者某个表的条件列出来,我是这样做的:
在系统SysQueryForm类中找到方法buildDataSourceTreeChild中
private void buildDataSourceTreeChild(FormTreeControl _formTreeControl, SysDataSourceId _parentId, QueryBuildDataSource _queryBuildDataSource) { ImageRes imageRes; ImageRes overlayImageRes; TreeItemIdx treeItemIdx; FormTreeItem formTreeItem; ; if(_queryBuildDataSource.table() == tableid) return; if (!disabledDataSourceSet.in(_queryBuildDataSource.uniqueId()) && !dataSourceIdxMap.exists(_queryBuildDataSource.uniqueId())) {...} }
加了红色部分的代码,tableid 就是需要隐藏表的编号
在方法buildRange中
public void buildRange(TmpSysQuery _common, TmpSysQueryCompanyRange _tmpCompanyRange) { ...; ; _common.setTmpData(tmp); dataSourceCnt = clientSysQueryEdit.query().dataSourceCount(); rangeNextSortNo = new Map(Types::Integer, Types::Integer); for(i = 1; i <= dataSourceCnt; i++) { ... for(j=1; j <= rangeCnt; j++) { queryBuildRange = queryBuildDataSource.range(j); if(queryBuildRange.table() == tableid) continue; ... } ... } ... }
添加红色部分代码,隐藏表编号为tableid的条件