4. 现在我们来看看Lookup的条件过滤,CRM3和CRM4有很大不同,我们通过例子来说明:
我们用的例子是:在公司(Account)记录里的主要联系人(primarycontactid) Lookup列表里只显示和这条公司记录(Account)有关联的联系人(Contact)。
a. CRM 3.0
b. CRM 4.0
据我目前了解,在CRM4.0里主要有两种unsupported customization可以进行这样的过滤。由于这个例子并不需要复杂的FetchXml查询,所以我们用第一种方法:
(1) 定制联系人(Contact) 实体, 打开 Contacts Lookup View, 点击'添加新的搜索栏'( Add Find Column), 选择parentcustomerid,保存并发布。
(2) 定制公司 (Account) 实体,在onLoad()里面添加如下代码:
这里使用到了‘search’参数,它的作用相当于用户在搜索栏填写了搜索内容。这里的搜索内容就是‘公司名’,由于我们在第一步已经将公司名添加到了搜索关键字栏,所以这个lookup将返回我们指定的公司(Account)记录。
现在如果我们把要求改变一下:只显示和这个公司(Account)的上级公司(parentaccountid)有关联的联系人(Contact)。
第一步是一样的,第二步改成如下代码:
上级公司(parentaccountid)也是一个Lookup,我们还要在它的 onChange()里面添加代码:
Ok, 现在问题解决了!
如果我们再改变一下要求:我们希望当用户选择了上级公司(parentaccountid)后,这个上级公司主要联系人(primarycontactid) 自动填充到当前公司(account)的主要联系人里。
虽然我们可以使用 AJAX 技术来达到这个目的,CRM4.0为我们提供了一个更酷的特性:Lookup自动填充(automatic resolutions)功能。
感谢 Adi Katz, 让我们从头开始来实现它:
(1) 关闭上级公司(parentaccountid) 的自动填充功能(automatic resolutions in field),只需要在Form上双击parentaccountid区域,然后在第一页就可以看到选项来取消这个功能。
(2) 在Form.onLoad()里面输入如下代码:
Ok! 所有问题都解决了。一开始提到的CRM 4.0复杂的FetchXml过滤功能将在下一篇blog里详细解释。:)