關於作者:

本文由微軟最有價值專 MVP 高榮章提供。微軟十分感謝 MVP 主動地將他們的經驗與上百萬名其他技術使用者交流。MVP 高榮章 同時也將此篇文章放在他的部落格內,歡迎您按 此處  瀏覽 MVP高榮章更多的技術文章、經驗分享與觀點。

問題的來龍去脈

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





問題的發生原因

ReportViewer 元件本身沒提供匯出模式預設值設定。

問題的解決方法

在 Report Viewer 裡有兩個元件【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。

請讓我們知道

還滿意我們寫的內容嗎?無論您是遇到了以下任何一種情況:
「太好了!問題解決了。」
「問題沒有解決,我有更好的建議。」
都歡迎您利用本篇文章底部的意見調查表,寫下您寶貴的意見。也期待您的鼓勵,讓我們為您創造更多實用的技術文章。

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×