在CRM4.0里很多时候我们有根据一定的条件对Lookup里的内容进行过滤,比如说编辑客户实体的主要联系人是,我们想只显示这个客户的联系人供选择,而非所有的联系人。
在3.0里,微软有提供方法来解决这个需求,但在4.0了该方法已经不起作用了。
满足如上的需求也很简单,只需要两个步骤就可以解决:
步骤1:在客户实体Form的Onload事件中增加如下的Javascript代码,
var field = crmForm.all.primarycontactid;
if(crmForm.ObjectId == null)
{
field.Disabled = true;
}else
{
field.lookupbrowse = 1;
field.AddParam("search", "<fetch mapping='logical'><entity name='contact'>" + "<filter><condition attribute='parentcustomerid' operator='eq' value='" + crmForm.ObjectId + "' /></filter></entity></fetch>");
}
步骤2,修改 CRM站点\_controls\lookup\lookupsingle.aspx,在文件中的任何地方添加如下代码
<script runat="server">
protected override void OnLoad( EventArgs e )
{
base.OnLoad(e);
crmGrid.PreRender += new EventHandler( crmgrid_PreRender );
}
void crmgrid_PreRender( object sender , EventArgs e )
{
if (crmGrid.Parameters["search"] != null
&& crmGrid.Parameters["search"].StartsWith("<fetch>"))
{
crmGrid.Parameters.Add("fetchxml", crmGrid.Parameters["search"]);
crmGrid.Parameters.Remove("searchvalue");
this._showNewButton = false;
}
}
</script>
OK,enjoy
没有评论:
发表评论