使用ActiveReports遇到的问题
1. 根据下拉菜单内容控制table的动态显示和隐藏。2. 导出(后台)按钮导不出全部数据,也不能导出检索后的数据,只能导出表头。"导出为excel"、“导出为PDF”、“导出为WORD”导出时调用js,出现"缺少对象提示"。
3. 打印问题,可以在不安装PDF阅读器的环境打印吗?
回复 1楼dof的帖子
问题一,前台目前无法控制,请在后台操作。示例如下:
问题二,
1.后台导出请尝试现在服务器端导出看能否成功。
2.前台导出文件,请参考附件 Demo:
问题三,目前需要安装 PDF阅读器才能使用 js 方法打印。 你好,谢谢详细解答,但是还是存在一些问题,希望能够解决。代码见附件
问题一:
怎么在存在检索条件下,进行动态table显示和隐藏?
问题二:
1.调用js代码实现“导出”功能时,试发布后不能导出?
2.aspx.cs中导出功能代码如下,但是不能导出数据?
// 导出EXCEL
GrapeCity.ActiveReports.PageReport report1 = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath("PageReport1.rdlx")));
GrapeCity.ActiveReports.Document.PageDocument _reportRuntime = new GrapeCity.ActiveReports.Document.PageDocument(report1);
GrapeCity.ActiveReports.Export.Excel.Page.ExcelTransformationDevice _renderingExtension = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelTransformationDevice();
GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider _provider = new GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider();
_reportRuntime.Render(_renderingExtension, _provider);
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("content-disposition", "inline;filename=MyExport.xls");
System.IO.MemoryStream ms = new System.IO.MemoryStream();
_provider.GetPrimaryStream().OpenStream().CopyTo(ms);
Response.BinaryWrite(ms.ToArray());
Response.End();
// 导出EXCEL
问题三:
打印功能需求希望在不安装PDF阅读器的环境下和Flash进行打印,请问除了JS调用方法之外,是否有其他实现打印功能方法,如何实现?
初学者,希望能在上传的代码中进行修改和说明,非常感谢! 回复 3楼czlt的帖子
czlt 你好
问题一:怎么在存在检索条件下,进行动态table显示和隐藏?
回复一:你的实现方法是正确的,只是在报表PageReport1的脚本中缺少SetVisibitly代码,还有就是你报表设计界面中 Table1 合同信息表的 Hidden 应该设置为 =Code.SetVisibitly("table1",Parameters!Report1.Value)
Function SetVisibitly(ByVal tablename As Object, ByVal values As Object()) As Boolean
For i As Integer = 0 To values.Length - 1
If values(i) = tablename Then
Return False
End If
Next
Return True
End Function 回复 3楼czlt的帖子
问题二:
1.调用js代码实现“导出”功能时,试发布后不能导出?
2.aspx.cs中导出功能代码如下,但是不能导出数据?
回复二:
1.调用js代码实现“导出”功能时,试发布后不能导出?
先检查一下是不是把所有的ActiveReports相关DLL都正常发布了,你可以尝试将C:\Program Files (x86)\Common Files\ComponentOne\ActiveReports 8 目录中的DLL都拷贝到你站点的bin目录下
2.aspx.cs中导出功能代码如下,但是不能导出数据?
后台导出时你没有指定Contractid和Report1两个参数的值,我想这是主要原因。
protected void btnExcel_Click(object sender, EventArgs e)
{
// 加载报表
LoadReport(TextBox1.Text);
GrapeCity.ActiveReports.PageReport report1 = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath("PageReport1.rdlx")));
report1.Report.ReportParameters.DefaultValue.Values.Clear();
report1.Report.ReportParameters.DefaultValue.Values.Add(TextBox1.Text);
report1.Report.ReportParameters.DefaultValue.Values.Clear();
report1.Report.ReportParameters.DefaultValue.Values.Add("table1");
report1.Report.ReportParameters.DefaultValue.Values.Add("table2");
report1.Report.ReportParameters.DefaultValue.Values.Add("table3");
// 打印
GrapeCity.ActiveReports.Document.PageDocument _reportRuntime = new GrapeCity.ActiveReports.Document.PageDocument(report1);
GrapeCity.ActiveReports.Export.Excel.Page.ExcelTransformationDevice _renderingExtension = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelTransformationDevice();
GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider _provider = new GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider();
_reportRuntime.Render(_renderingExtension, _provider);
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("content-disposition", "inline;filename=MyExport.xls");
System.IO.MemoryStream ms = new System.IO.MemoryStream();
_provider.GetPrimaryStream().OpenStream().CopyTo(ms);
Response.BinaryWrite(ms.ToArray());
Response.End();
// 打印
} 回复 3楼czlt的帖子
问题三:
打印功能需求希望在不安装PDF阅读器的环境下和Flash进行打印,请问除了JS调用方法之外,是否有其他实现打印功能方法,如何实现?
回复三:目前Web中的打印可以分为HTML打印、PDF打印、Flash打印和ActiveX打印,然后,从Windows用户安装软件的情况来看,PDF打印的要求是比较底的,因为超过95%的用户均按照了该功能。
所以,我推荐的是前端通过JS调用PDF打印,实现方便,打印效果好。 请修改报表的数据源链接:
检索条件与动态table通过一个按钮控制
您好!谢谢详细的解答。现在在同时进行检索和动态table显示时,想只要一个按钮就行,不知道是否用一个按钮控制?具体怎么实现?非常感谢!问题见附件说明!代码为6楼修改的代码,其中也存在同样问题。 回复 8楼czlt的帖子最方便的解决方法是都在报表浏览器中显示,7# 的Demo按照如图方式设置即可,如果有其他参数也可以按照相同方法设置:
回复 9楼iceman的帖子
你好,按你的方法实现了,但是获取不到输入的信息,查找不出数据,请问题还有那个地方需要修改?谢谢