我正在使用术前检索多个插件为帐户子网格查找添加条件。这可以正常工作,但是它适用于对帐户实体的所有查询。我希望它仅在用户访问一种形式的一个子网格内的查找时才适用。有什么方法可以检索触发查询的查询?或者,是否可以通过其他方式实现我想做的任何事情?这样做的目的是过滤可以添加到子网格中的帐户。
这是我的代码:
public class FilterAversedSuppliers : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
//Extract the tracing service for use in debugging sandboxed plug-ins.
ITracingService tracingService =
(ITracingService)serviceProvider.GetService(typeof(ITracingService));
// Obtain the execution context from the service provider.
IPluginExecutionContext context = (IPluginExecutionContext)
serviceProvider.GetService(typeof(IPluginExecutionContext));
// The InputParameters collection contains all the data passed in the message request.
if (context.InputParameters.Contains("Query") &&
context.InputParameters["Query"] is QueryExpression)
{
try
{
QueryExpression objQueryExpression = (QueryExpression)context.InputParameters["Query"];
ConditionExpression condition = new ConditionExpression()
{
AttributeName = "customertypecode",
Operator = ConditionOperator.Equal,
Values = { 4 }
};
objQueryExpression.Criteria.AddCondition(condition);
tracingService.Trace("Custom Filter Added");
}
catch (FaultException<OrganizationServiceFault> ex)
{
throw new InvalidPluginExecutionException("An error occurred in the FollowupPlugin plug-in.", ex);
}
catch (Exception ex)
{
tracingService.Trace("FollowupPlugin: {0}", ex.ToString());
throw;
}
}
}
}
答案 0 :(得分:0)
在查找视图的条件上,添加类似“名称”等于“ FilterMe”的内容。
现在在您的插件中,检查传入的fetchxml查询。如果它包含您的特殊条件,则您知道要应用特殊过滤。不要忘记从代码中的查询中删除特殊条件。
现在所有其他查询都不应触发您的特殊过滤器。