
本篇中要讲的是对产品视图基于某个条件进行过滤显示,而手段就是通过插件中的retrIEvemultiple消息,可能很多人都写过对它都不陌生。
先来看张插件注册的截图,插件的message是retrIEvemultiple,对应的实体我这里用的是product(为何用它是由于它特殊,由于它特殊才有了本篇博文),事件是pre-operation(这个很好理解,在展现数据之前就要过滤好,1定是pre中的 *** 作了)
之前写的代码是这样的,判断inputParameters是否是query,然后再判断query的实体是否是产品,再进行逻辑处理
if (context.inputParameters.Contains("query") && context.inputParameters["query"] is queryExpression) { queryExpression query = (queryExpression)context.inputParameters["query"]; if (query.Entityname == "product") { //逻辑处理 } } 但在365online(2016on-premises也是一样的问题)中死活不行,然后断点调了下发现query.Entityname中竟然没有product了,调试下来发现取到的都是下面这些鬼emailqueuesolutionsavedquerysystemuserrolesrb_userrolevIEwconfigurationrb_rolevIEwconfigurationuserquery很奇怪,product去哪了,不用queryExpression筛数据那用甚么筛啊,我们把问题往前推到第1个if,看下面这张截图,你会发现尼玛变FetchExpression了而不是queryExpression,所以第1个if都没进怎样可能进第2个if呢
我尝试的实体不多,目前发现的产品、客户、联系人都是这类情况,自定义的实体用queryExpression都ok的,1开始猜想是否是系统实体都改FetchExpression挑选了,但尝试了报价单的视图用queryExpression过滤是可以的,有时间得好好查查资料看看甚么个情况,如果有人了解其中缘由的也欢迎分享。
下面奉上FetchExpression的代码,这里用到了FetchExpression和queryExpression之间的相互转化
if (context.inputParameters["query"] is FetchExpression) { FetchExpression fetch = (FetchExpression)context.inputParameters["query"]; var conversionRequest = new FetchXmlToqueryExpressionRequest { FetchXml = fetch.query }; var conversionResponse = (FetchXmlToqueryExpressionResponse)service.Execute(conversionRequest); // Use the newly converted query Expression to make a retrIEve multiple // request to Microsoft Dynamics CRM. query = conversionResponse.query; if (query.Entityname == "product" && context.Depth == 1) { //逻辑 } // Convert the query Expression to FetchXML. var converRequest = new queryExpressionToFetchXmlRequest { query = query }; var converResponse = (queryExpressionToFetchXmlResponse)service.Execute(converRequest); // Use the converted query to make a retrIEve multiple request to Microsoft Dynamics CRM. String fetchXml = converResponse.FetchXml; fetch.query = fetchXml; } FetchExpression和queryExpression之间的相互转化的msdn示例: https://msdn.microsoft.com/zh-cn/library/hh547457.aspx
以上是内存溢出为你收集整理的Dynamics 365Online 通过插件中的retrievemultiple消息来过滤产品视图全部内容,希望文章能够帮你解决Dynamics 365Online 通过插件中的retrievemultiple消息来过滤产品视图所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)