本篇中要講的是對產品視圖基于某個條件進行過濾顯示,而手段就是通過插件中的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了,調試下來發現取到的都是下面這些鬼
email queue solution savedquery systemuserroles rb_userroleviewconfiguration rb_roleviewconfiguration userquery很奇怪,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
上一篇 微信小程序全套使用指南