设定ReportViewer显示Reporting Service 报表时的可导出文件类型
在网上找到的,试了下是可以的,记录下
先引用下Microsoft.ReportingServices.Interfaces.DLL
在页面上添加一个ReportViewer,名字为 ReportViewer1
Imports Microsoft.Reporting.WebForms
Imports System.Reflection
Imports Microsoft.SqlServer.ReportingServices2005.Execution
Protected Sub ReportViewer1_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles ReportViewer1.PreRender
Dim rw As ReportViewer = CType(sender, ReportViewer)
If (rw Is Nothing) Then
Return
End If
rw.ServerReport.ListRenderingExtensions()
'Microsoft.SqlServer.ReportingServices2005()
'dim renders = from r in rw.ServerReport.ListRenderingExtensions() where string.Compare(r.Name, "Excel", true) != 0 Select r
'for each (dim r in renders)
' HideRender(r)
'Next
For Each extension As RenderingExtension In rw.ServerReport.ListRenderingExtensions()
If extension.Name <> "PDF" And extension.Name <> "EXCEL" Then
HideRender(extension)
End If
Next
End Sub
Private Sub HideRender(ByVal re As Microsoft.Reporting.WebForms.RenderingExtension)
'Dim renderType As Type = re.GetType()
'Dim fieldInfo As System.Reflection.FieldInfo = renderType.GetField("m_serverExtension", BindingFlags.NonPublic Or BindingFlags.Instance)
'Dim extension As Object = fieldInfo.GetValue(re)
'Dim extensionType As Type = extension.GetType()
'Dim propertyInfo As PropertyInfo = extensionType.GetProperty("Visible")
'propertyInfo.SetValue(extension, False, Nothing)
Dim info As FieldInfo = re.GetType().GetField("m_serverExtension", BindingFlags.NonPublic Or BindingFlags.Instance)
If (Not info Is Nothing) Then
'Dim rsExtension As Extension = CType(info.GetValue(re), Extension)
'If (Not rsExtension Is Nothing) Then
' rsExtension.Visible = False
'End If
If (Not CType(info.GetValue(re), Extension) Is Nothing) Then
CType(info.GetValue(re), Extension).Visible = False
End If
End If
End Sub