問題的發生原因
ReportViewer 元件本身沒提供匯出模式預設值設定。問題的解決方法
在Report Viewer 2008裡有兩個元件【dropdown 】、【匯出】,這兩元件最後都會被轉譯成HTML,顯示在使用者的瀏覽器,因此我們可以將【匯出】的ciick事件註冊一個新的function,來進行匯出選項的順序和定位處理。以下的程式碼將會把預設格式設定在 PDF:
首先我們新增一個report viewer,ID為rpvMain
<rsweb:ReportViewer ID="rpvMain" runat="server" Font-Names="Trebuchet MS,arial" BackColor="White" InternalBorderColor="204, 204, 204" LinkDisabledColor="Black" ShowPrintButton="False" ShowFindControls="False" Font-Size="12px" Width="970px" Style="text-align: left;display:inline;" Height="400px"> <LocalReport ReportPath="Report1.rdlc"> </LocalReport> </rsweb:ReportViewer>
接著增加triggerExport的javascript function,並註冊到ID=rpvMain_ctl01_ctl05_ctl002的表單元件,這就是匯出項目的下拉選單,ID=[reportViewer ID] + "_ctl01_ctl05_ctl002",以下是詳細的程式:
<script language="javascript" type="text/javascript"> function triggerExport() { var formatDropDown = document.getElementById('rpvMain_ctl01_ctl05_ctl00'); if (formatDropDown.selectedIndex == 0) return false; window.open(document.getElementById('rpvMain').ClientController.m_exportUrlBase + encodeURIComponent(formatDropDown.value), '_blan') //修改Downlist裡Excel的索引為適當值 formatDropDown.selectedIndex = 2; document.getElementById('rpvMain_ctl01_ctl05_ctl01').Controller.SetViewerLinkActive (document.getElementById('rpvMain_ctl01_ctl05_ctl00').selectedIndex != 0); return false; } if (document.getElementById('rpvMain_ctl01_ctl05_ctl00') != null) { // 修改Downlist裡的索引值 ,這邊指到PDF document.getElementById('rpvMain_ctl01_ctl05_ctl00').selectedIndex = 2; document.getElementById('rpvMain_ctl01_ctl05_ctl01').onclick = null; //註冊triggerExport到dropdownlist的click事件 document.getElementById('rpvMain_ctl01_ctl05_ctl01').onclick = triggerExport; } </script>
如此就大功告成了,如果點下拉選單的不會觸發triggerExport,可以點檢視原始碼,查看一下title="匯出格式" 的Dropdownlist的ID(如下)。
再修改以上所有rpvMain_ctl01_ctl05_ctl01為正確ID。
以上不適用report viewer 2010。
參考
http://therelentlessfrontend.com/2010/03/10/ssrs-making-excel-the-default-export-option-for-reportviewer/
沒有留言:
張貼留言