在实现一些特殊场景功能的时候,我们会想实现类似高级查找的效果,但是如果是自己实现的话又会很麻烦,既要获取到实体字段,又要提供操作符,如果是lookup(查找)字段的话,还要获取关联实体的数据。这时候我们可以使用微软提供的一个页面来实现这个功能,效果如下图:
设置步骤如下:
1、在窗体上插入一个iframe
2、设置iframe的路径指向
Xrm.Page.context.getClientUrl() + "/SFA/goal/ParticipatingQueryCondition.aspx?entitytypecode=实体编码
前面部分是动态获取当前CRM组织地址,后面是固定路径,参数传的是实体的编码,是从EntityView视图获取的,实例sql:select ObjectTypeCode from EntityView where Name='account'。或者是使用前端脚本的方式获取,用http的方式去查询EntityDefinitions的数据,查询代码后续提供。
3、这时候效果已经出来了,如果要获取该高级查找的fetchxml的话,可以执行
Xrm.Page.getControl(iframeControl).getObject("advFind").contentWindow.$find("advFind").get_fetchXml()
要赋值可以执行
①、清空现有的xml
Xrm.Page.getControl(iframeControl).getObject("advFind").contentWindow.$find("advFind").set_fetchXml(null);
②、给xml赋值
Xrm.Page.getControl(iframeControl).getObject("advFind").contentWindow.$find("advFind").set_fetchXml(fetchxml);