不过在4.0中解决这个问题也很简单,只需要写一个Plugin就可以解决所有问题。
Plugin的基本思路是:将我们自己的代码嵌入到RetieveMultiple 消息中,修改其中的查询条件,将过滤Inactive记录的ConditionExpression去掉。
简单代码如下:
using Microsoft.Crm.Sdk;
using Microsoft.Crm.Sdk.Query;
namespace RekTec.Crm.Plugins
{
public class AssociatedViewPlugin : IPlugin
{
public void Execute(IPluginExecutionContext context)
{
if (context.InputParameters.Contains(ParameterName.Query))
{
QueryExpression qe = context.InputParameters[ParameterName.Query] as QueryExpression;
if (qe.EntityName == context.PrimaryEntityName
&& qe.Criteria != null
&& qe.Criteria.Conditions != null
&& qe.Criteria.Conditions.Count == 2)
{
//找到针对statecode的过滤条件
ConditionExpression ce = qe.Criteria.Conditions[0] as ConditionExpression;
if (ce != null
&& ce.AttributeName == "statecode"
&& ce.Operator == ConditionOperator.Equal
&& ((int)ce.Values[0]) == 0)
{
//去掉对statecode的过滤
qe.Criteria.Conditions.Remove(ce);
}
}
}
}
}
}
没有评论:
发表评论