2011年8月24日

如何改變 ReportViewer 的預設匯出格式為指定格式:PDF

ASP.NET 中 ReportViewer 2008有兩種匯出格式:Execl 與 PDF,Report viewer 的預設格式是【選取格式】,因此你要匯出PDF時,匯出前需要手動選取PDF格式,如果想要畫面第一次載入時就把匯出模式定位在指定的格式,像是PDF(如下),卻沒有可以設定的地方。

image

問題的發生原因

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(如下)。

image


再修改以上所有rpvMain_ctl01_ctl05_ctl01為正確ID。


以上不適用report viewer 2010。


參考



http://therelentlessfrontend.com/2010/03/10/ssrs-making-excel-the-default-export-option-for-reportviewer/

沒有留言:

張貼留言