天天看點

MS CRM 2011 如何嵌入Report Viewer

(一) 将Report嵌入Dashboard中

使用的FetchXML定義如下:

<a></a>

Report的定義如下:

<a href="https://images0.cnblogs.com/blog/442200/201212/27092755-df76e64c517747f1a7189b135220caef.png"></a>

将report上傳到CRM中,上傳成功後,獲得reportid為{7EC592B7-B14F-E211-B622-D48564531939}

然後我們建立一個web resource, new_ReportViewerDashboard.html

注意幾點:

(1) 在body的onload事件中,直接将表單(Form)送出到Report Viewer(/CRMReports/rsviewer/reportviewer.aspx)中;

(2) 對ClientGlobalContext.js.aspx的引用。如果你的web resource命名為new_test/ReportViewerDashboard.html,那麼引用就應改為../ClientGlobalContext.js.aspx

(3) 表單送出的方式必須為 post。

接下來建立一個新的Dashboard,并插入web resource new_ReportViewerDashboard.html

<a href="https://images0.cnblogs.com/blog/442200/201212/27092758-f2cfa26cbe474819b2528d4b1c1fc79a.png"></a>

在對web resource的屬性定義中,一定要在Custom Parameter(data)中填寫進reportid,如下圖所示

<a href="https://images0.cnblogs.com/blog/442200/201212/27092803-f1e05ecbec6e4753a6233c6025f9ba19.png"></a>

publish 之後,打開Dashboard看一下

<a href="https://images0.cnblogs.com/blog/442200/201212/27092807-7cb9a92368fe44eaad6ae5191aae142d.png"></a>

如果你将web resource 的表單送出方式改為get(當然這樣你就無法在dashboard中看到report了),你會看到送出到report viewer的URL為

(二) 将Report嵌入Dashboard中并使用自定義參數

如果嵌入dashboard的report使用了自定義參數該怎麼辦?下面我們建立一個report使用自定義參數ownerid,我們隻獲得ownerid等于參數值的account及order。Fetch的定義如下:

同樣将report上傳到CRM中,獲得reportid為{BD814A01-BB4F-E211-B622-D48564531939}。我的CRM使用者systemuserid 為 {D608D786-8654-4933-9E7E-28B2950A382B}。

在Dashboard中再插入一次web resource new_ReportViewerDashboard.html,但注意這次web resource的屬性與上面不同,在Custom Parameter(data)中,需要定義reportid, ownerid,以及hideparams(用來隐藏參數)。

reportid={BD814A01-BB4F-E211-B622-D48564531939}&amp;ownerid={D608D786-8654-4933-9E7E-28B2950A382B}&amp;hideparams=true

<a href="https://images0.cnblogs.com/blog/442200/201212/27092812-25970062890e40cb8ff323657b845c82.png"></a>

publish後看到結果如下:

MS CRM 2011 如何嵌入Report Viewer

(三) 将Report嵌入Form中并使用自定義參數

将report嵌入到form中,通常就意味着我們隻想看到關于該entity的report。還以上面的report為例,我們使用一個entityid自定義參數,再報表中我們隻顯示accountid等于參數值的account及order。FetchXML定義如下:

同樣将report上傳到CRM中,獲得reportid為{E13A5A3D-C04F-E211-B622-D48564531939}。

建立一個新的HTML web resouce,它與之前web resouce的不同之處在于對entityid的處理,具體看下面代碼:

然後在account的Form中插入該web resouce,web resouce的屬性如下:

MS CRM 2011 如何嵌入Report Viewer

要注意需要勾選上 Pass record object-type code and unique identifier as parameter。

如果你感興趣可以試着看一下傳遞給web resouce的參數為什麼,alert(window.location.search.substring(1));

data=reportid%3d%7bE13A5A3D-C04F-E211-B622-D48564531939%7d%26hideparams%3dtrue&amp;id=%7b55B16BF4-6219-E211-B112-3C4A92DBD80A%7d&amp;orglcid=1033&amp;orgname=aaronbabbitt&amp;type=1&amp;typename=account&amp;userlcid=1033

我們看到有account的id,使用者使用的語言,organization name等等。

最後看一下結果,隻顯示了目前form的account:

MS CRM 2011 如何嵌入Report Viewer

總結:本文介紹了如何将report嵌入到dashboard或者form中。基本的方法就是,先手動建立一個report(最好不要使用CRM生成的report),你可以為該report定義自定義參數,然後将report上傳到CRM中。接下來再建立一個web resouce,web resouce中利用了body的onload事件處理,将表單送出到Report Viewer中去。在dashboard或者form中插入web resouce時,要注意對web resouce 屬性的配置。

本文轉自JF Zhu部落格園部落格,原文連結:http://www.cnblogs.com/jfzhu/archive/2012/12/27/2835098.html    ,如需轉載請自行聯系原作者

繼續閱讀