Internet explorer 打印按钮在使用IE11的ReportViewer中不可用
因此,我们注意到ReportViewer(Internet explorer 打印按钮在使用IE11的ReportViewer中不可用,internet-explorer,reportviewer,internet-explorer-11,Internet Explorer,Reportviewer,Internet Explorer 11,因此,我们注意到ReportViewer(Version=10.0.0.0)中的打印按钮在升级到IE11 这就是IE10中的情况: 在做了一些研究之后,我们发现其他人也报告了这个问题(即),但还没有找到解决方案。使用compability模式将是一个解决方案,但对客户来说不是可行/合适的解决方案。 有人知道怎么解决这个问题吗?这几周,我们面临着同样的问题。 最后,我们找到了一些解决方法,以下是步骤: 将“报表查看器2012运行时”更新为11.1.3366 将“Microsoft.Net Fra
Version=10.0.0.0
)中的打印按钮在升级到IE11
这就是IE10中的情况:
在做了一些研究之后,我们发现其他人也报告了这个问题(即),但还没有找到解决方案。
使用compability模式将是一个解决方案,但对客户来说不是可行/合适的解决方案。
有人知道怎么解决这个问题吗?这几周,我们面临着同样的问题。 最后,我们找到了一些解决方法,以下是步骤:
ReportViewer 11我使用了该页()中的代码,并为此创建了一个类。您可以在页面中添加一个按钮并调用它
---- Call ---------
ReportPrinter prnt = new ReportPrinter();
prnt.Print(rpt.LocalReport);
Class Code
------------
using Microsoft.Reporting.WebForms;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Printing;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
namespace javaFish.blogspot.Utils
{
/// <summary>
/// Prints report as xps file to default printer.
/// </summary>
public class ReportPrinter : IDisposable
{
//Local variables
private int m_currentPageIndex;
private IList<Stream> m_streams;
private LocalReport report = null;
/// <summary>
/// Routine to provide to the report renderer, in order to save an image for each page of the report.
/// </summary>
/// <param name="name"></param>
/// <param name="fileNameExtension"></param>
/// <param name="encoding"></param>
/// <param name="mimeType"></param>
/// <param name="willSeek"></param>
/// <returns></returns>
private Stream CreateStream(string name, string fileNameExtension, Encoding encoding, string mimeType, bool willSeek)
{
Stream stream = new MemoryStream();
m_streams.Add(stream);
return stream;
}
/// <summary>
/// Export the given report as an EMF (Enhanced Metafile) file.
/// </summary>
/// <param name="report"></param>
private void Export()
{
string deviceInfo =
@"<DeviceInfo>
<OutputFormat>EMF</OutputFormat>
<PageWidth>"+ report.GetDefaultPageSettings().PaperSize.Width.ToString()+ @"in</PageWidth>
<PageHeight>" + report.GetDefaultPageSettings().PaperSize.Height.ToString() + @"in</PageHeight>
<MarginTop>" + report.GetDefaultPageSettings().Margins.Top.ToString() + @"in</MarginTop>
<MarginLeft>" + report.GetDefaultPageSettings().Margins.Left.ToString() + @"in</MarginLeft>
<MarginRight>" + report.GetDefaultPageSettings().Margins.Right.ToString() + @"in</MarginRight>
<MarginBottom>" + report.GetDefaultPageSettings().Margins.Bottom.ToString() + @"in</MarginBottom>
</DeviceInfo>";
Warning[] warnings;
m_streams = new List<Stream>();
report.Render("Image", deviceInfo, CreateStream,
out warnings);
foreach (Stream stream in m_streams)
stream.Position = 0;
}
/// <summary>
/// Handler for PrintPageEvents
/// </summary>
/// <param name="sender"></param>
/// <param name="ev"></param>
private void PrintPage(object sender, PrintPageEventArgs ev)
{
Metafile pageImage = new
Metafile(m_streams[m_currentPageIndex]);
// Adjust rectangular area with printer margins.
Rectangle adjustedRect = new Rectangle(
ev.PageBounds.Left - (int)ev.PageSettings.HardMarginX,
ev.PageBounds.Top - (int)ev.PageSettings.HardMarginY,
ev.PageBounds.Width,
ev.PageBounds.Height);
// Draw a white background for the report
ev.Graphics.FillRectangle(Brushes.White, adjustedRect);
// Draw the report content
ev.Graphics.DrawImage(pageImage, adjustedRect);
// Prepare for the next page. Make sure we haven't hit the end.
m_currentPageIndex++;
ev.HasMorePages = (m_currentPageIndex < m_streams.Count);
}
/// <summary>
/// Exports local report and tries to print
/// </summary>
public bool Print(LocalReport localReport)
{
try
{
report = localReport;
Export();
if (m_streams == null || m_streams.Count == 0)
throw new Exception("Error: no stream to print.");
PrintDocument printDoc = new PrintDocument();
if (!printDoc.PrinterSettings.IsValid)
{
throw new Exception("Error: cannot find the default printer.");
}
else
{
printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
m_currentPageIndex = 0;
printDoc.Print();
}
return true;
}
catch
{
return false;
}
}
/// <summary>
/// Dispose resources
/// </summary>
public void Dispose()
{
if (m_streams != null)
{
foreach (Stream stream in m_streams)
stream.Close();
m_streams = null;
}
}
}
}
----调用---------
ReportPrinter prnt=新的ReportPrinter();
打印(rpt.LocalReport);
类别代码
------------
使用Microsoft.Reporting.WebForms;
使用制度;
使用System.Collections.Generic;
使用系统图;
使用系统、绘图、成像;
使用系统、绘图、打印;
使用System.IO;
使用System.Linq;
使用系统文本;
使用System.Web;
命名空间javaFish.blogspot.Utils
{
///
///将报告作为xps文件打印到默认打印机。
///
公共类报表打印机:IDisposable
{
//局部变量
私有int m_currentPageIndex;
私人IList m_溪;
私有LocalReport=null;
///
///提供给报表呈现程序的例程,以便为报表的每个页面保存图像。
///
///
///
///
///
///
///
私有流CreateStream(字符串名称、字符串文件名扩展、编码编码、字符串mimeType、bool willSeek)
{
Stream=新的MemoryStream();
m_streams.Add(stream);
回流;
}
///
///将给定报告导出为EMF(增强元文件)文件。
///
///
私有void导出()
{
字符串设备信息=
@"
电动势
中的“+report.GetDefaultPageSettings().PaperSize.Width.ToString()+@”
中的“+report.GetDefaultPageSettings().PaperSize.Height.ToString()+@”
中的“+report.GetDefaultPageSettings().Margins.Top.ToString()+@”
中的“+report.GetDefaultPageSettings().Margins.Left.ToString()+@”
中的“+report.GetDefaultPageSettings().Margins.Right.ToString()+@”
中的“+report.GetDefaultPageSettings().Margins.Bottom.ToString()+@”
";
警告[]警告;
m_streams=新列表();
report.Render(“图像”、deviceInfo、CreateStream、,
发出警告);
foreach(m_streams中的流)
流位置=0;
}
///
///PrintPageEvents的处理程序
///
///
///
私有void打印页(对象发送方,PrintPageEventArgs ev)
{
图元文件pageImage=new
元文件(m_streams[m_currentPageIndex]);
//使用打印机边距调整矩形区域。
矩形adjustedRect=新矩形(
ev.PageBounds.Left-(int)ev.PageSettings.HardMarginX,
ev.PageBounds.Top-(int)ev.PageSettings.HardMarginY,
ev.PageBounds.Width,
电动汽车(高),;
//为报告绘制白色背景
电动图形。填充矩形(画笔。白色,调整矩形);
//绘制报告内容
ev.Graphics.DrawImage(页面图像,调整后的图像);
//准备下一页。确保我们没有讲到最后。
m_currentPageIndex++;
ev.HasMorePages=(m_currentPageIndex
确保您的SQL server已升级到Service Pack 2。ie10+和SQL Server 2008R2 RTM存在几个兼容性问题
连接到SQL Server实例,然后运行以下查询:
Select @@version
这个链接帮了我很多 [ 介绍了解决此问题的两种方法: 1-安装.Net 4.5.1 [ 或 2-添加浏览器文件,如上述来源所述: 在的根目录下的App_Browsers文件夹中创建新的浏览器文件 您的解决方案。将以下文本粘贴到文件中,然后运行。 这个问题应该得到解决
Select @@version