我又有一点问题.我在Visual Studio 2010中的Windows窗体应用程序中使用了ReportViewer.我的报告的宽度约为7英寸.当我在打印布局中查看报表时,报表在页面上被剪切,即页面上只有一半的内容位于页面边缘,而页面边界不在右边.然后我必须在报告查看器顶部菜单中单击页面设置来更改页面设置,我只是将左右边距从1减少到0.25.
我不想每次查看和打印报告时都这样做.有没有办法在C#中以编程方式更改这些设置或更改默认页面布局?
这让我疯了.我在VS2012中使用winforms app构建了.NET 4.5.在一些表单上,我必须使用ReportViewer.起初我使用ReportViewer for 2012(版本11.0.0.0).一切正常.但是我的客户端不希望在他们的工作站上安装此版本,因为此版本使用CLR Types SQL 2012.不要问我为什么,但我现在必须接受这个.
所以我决定使用之前的reportviewer 10.0.0版.我下载了再分发软件包并进行了安装.我还将它添加到VS2012中的工具箱中,并删除了我的项目中已经引用的reportviewer dll.但是当我在表单上拖动版本10 reportviewer时,我收到以下错误:
无法加载文件或程序集"Microsoft.ReportDesigner,Version = 10.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a"或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
应用程序运行没有错误,但我没有使用此reportviewer控件在表单上的设计时支持,如图中所示.我想摆脱这个错误.
我检查了GAC,找不到提到的MicroSoft.ReportDesigner.它适用于版本9.0.0.0和11.0.0.0但不适用于10.0.0.0.
Bottomline,我如何使用ReportViewer 10.0.0版.在VS2012的设计时没有设计时错误的问题?
框架:.NET 4.5应用程序类型:winforms语言:vb.net Visual Studio:版本2012控件:ReportViewer 10.0.0.0 SP 1
PS我还测试了VS2010中的ReportViewer控件,在设计时使用它没有问题.
[UPDATE]
我尝试在VS2012中的表单上添加ReportViewer时的确切错误是:
报告已部署并正常运行,在报告管理器中进行验证
我的应用程序是一个MVC2应用程序,我的报告在自己的aspx页面上.此页面与报表查看器控件的版本8一起使用,但我们移动到新服务器,升级了sql server,并且正在尝试更新我们的网站以匹配.
服务器是带有IIS 7.5的Windows Server 2008.
我正在测试chrome和IE 9.
尽管我付出了最大努力,但仍然会收到此错误:
报告查看器配置错误
报表查看器Web控件HTTP处理程序尚未在应用程序的web.config文件中注册.添加
<add verb="*" path="Reserved.ReportViewerWebControl.axd" type = "Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
到web.config文件的system.web/httpHandlers部分,或添加<add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
到Internet Information Services 7或更高版本的system.webServer/handlers部分.
但是,我已经做到了这一点.事实上,我甚至从MSDN上读到了这个:
要在集成模式下使用IIS 7.0,必须删除system.web/httpHandlers中的HTTP处理程序.否则,IIS将不会运行该应用程序,但会显示错误消息.
为了安全起见,我尝试了直接将处理程序添加到IIS中的组合,只是我的配置中的Web服务器http处理程序,只是我的配置中的http处理程序,以及两者.
让我们从我的web.config开始
<configuration
<system.web>
<httpRuntime maxQueryStringLength="4096" />
<compilation targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
<add assembly="Microsoft.ReportViewer.Common, …
Run Code Online (Sandbox Code Playgroud) 如果在tablix(表)中有一个带有分组列的rdlc报告.我想添加一个跨越所有动态创建的列的页脚行,并显示所有列的总计.如何告诉单元格它应该跨越组创建的所有创建的列?
|-------|-------|-------|
| col 1 | col 2 | col 3 |
|-------|-------|-------|
| Column-Group Total |
|-----------------------|
Run Code Online (Sandbox Code Playgroud)
请注意,计算总数不是我的问题.我只是在寻找一种方法来告诉报表查看器合并通过特定行的列组自动创建的单元格.
更新
可悲,到目前为止,我还没有找到解决方案.此外,我在报告中遇到了同样的问题,我必须在合并列中添加行组的总数.
|------|-------|
|row 1 | |
|------| Row- |
|row 2 | Group |
|------| Total |
|row 3 | |
|------|-------|
Run Code Online (Sandbox Code Playgroud)
我发现这是显示总数的一种非常常见的方式.这是不可能的,或者我错过了一些明显的东西?
Update2
这里是我的意思截图:
中间有一个小组.这会在运行时创建n列.我想要做的是跨越所有动态创建的列的"跨越类别总计".这意味着,细胞的柱子是n
.只有一个单元格,在这个单元格中,我将显示所有类别的总数.它与报表查看器在组顶部自动创建的几乎相同.
我知道Chrome不受支持 - http://msdn.microsoft.com/en-us/library/ms156511.aspx用于报告查看器.
不幸的是,这里的解决方案对谷歌Chrome中的ReportViewer问题没有起作用
在我们的例子中,报告正文是空白的.我在工具栏中遇到了报告高度问题和失真问题的解决方案,但就我而言,我还没有进入那个阶段.
当我导航到Chrome中的报表管理器时,我可以看到我的报告[它们并不完美但至少显示报告正文]
http://localhost/Reports_SQLSERVER2008/Pages/Report.aspx? [clipped]
Run Code Online (Sandbox Code Playgroud)
我在这个问题上有两个问题,我希望有人能够对它们有所了解.
所有其他浏览器都很好.它是一个ASP.Net 4.0 Web表单应用程序,使用SQL Server 2008上的VS 2010版本的报表查看器[在短时间内转移到2008 R2].
我现在处于这样的阶段,即解决这个问题所需的努力可能是不合理的.我希望可能还有其他问题,如参数选择等.我想听听你的想法.
提前致谢,
RGDS,
利亚姆
我在Winforms应用程序中使用了ReportViewer控件.报告包含一些表达式,因此它尝试在临时文件夹中创建"表达式主机"程序集.除非我使用管理员权限运行程序(即右键单击,选择"以管理员身份运行..."),否则会收到以下错误消息:
"访问路径'C:\ Users\user\AppData\Local\Temp\expression_host_351sf52dsf5.dll'被拒绝"
现在真正的问题是,在我客户的客户端计算机上,用户无法访问管理员帐户.我该怎么办?
我检查了上面的dll是在临时文件夹中创建的,但程序无法访问它.我还在属性窗口的安全选项卡中授予了Full Control
权限.但没有成功.Everyone
'C:\Users\user\AppData\Local\Temp'
我还尝试在加载报告之前运行以下代码:
reportViewer1.LocalReport.SetBasePermissionsForSandboxAppDomain(new
System.Security.PermissionSet(System.Security.Permissions.PermissionState.Unrestricted));
Run Code Online (Sandbox Code Playgroud)
还有这个:
reportViewer1.LocalReport.SetBasePermissionsForSandboxAppDomain(AppDomain.CurrentDomain.PermissionSet.Copy());
Run Code Online (Sandbox Code Playgroud)
我花了几周时间试图解决这个问题.它既发生在我的机器上也发生在客户端oes上.欢迎任何想法.
编辑:我注意到报表查看器试图"删除"该文件,这会产生错误.这是堆栈跟踪:
Microsoft.Reporting.WinForms.LocalProcessingException: An error occurred during local
report processing. ---> Microsoft.Reporting.DefinitionInvalidException: The definition of the report 'D:\Projects\MyProject\bin\Reports\Report1.rdl' is invalid. ---> Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: An unexpected error occurred in Report Processing. ---> System.UnauthorizedAccessException: Access to the path 'C:\Users\User1\AppData\Local\Temp\expression_host_2bc11a902f7142e9a62bb28fd36c2d26.dll' is denied.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.File.Delete(String path)
at Microsoft.ReportingServices.RdlExpressions.ExprHostCompiler.InternalCompile(Report report, AppDomain compilationTempAppDomain, Boolean refusePermissions)
at Microsoft.ReportingServices.RdlExpressions.ExprHostCompiler.<>c__DisplayClass1.<Compile>b__0()
at Microsoft.ReportingServices.Diagnostics.RevertImpersonationContext.<>c__DisplayClass1.<Run>b__0(Object state)
at System.Security.SecurityContext.Run(SecurityContext securityContext, ContextCallback callback, Object state) …
Run Code Online (Sandbox Code Playgroud) 我有一个问题,我已经得出结论它是基于机器的,但是我想知道,如果它出现在另一台机器上怎么解决它.
我开发了(.NET 4)
我安装的I WPF项目 Installshield LE
.该程序的先决条件也是ReportViewer 2010,我之前安装(如果需要).
我已将程序安装到以下机器:
在上述所有机器中,我的报告运行得很好,除了#5(案例3),我得到以下错误:
Microsoft.Reporting.WinForms.LocalProcessingException: An error occurred during local report processing. --->
Microsoft.Reporting.DefinitionInvalidException: The definition of the report '' is invalid. --->
Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: An unexpected error occurred in Report Processing. --->
System.IO.IOException: The process cannot access the file 'C:\Documents and Settings\<WindowsLogOnName>\Local Settings\Temp\expression_host_2e380b8068bb4ef5a53225faab4ebcb4.dll' because it is being used by another process.
Run Code Online (Sandbox Code Playgroud)
所有机器都使用相同的数据库,我测试的报告在每种情况下都是相同的.
有没有人在此之前遇到过这个错误并且有任何线索?
我正在尝试获取用户名的参数并将其值替换为会话的用户名,以便我可以传递到DRL中的存储过程以生成具有此用户名的表时间戳.参数"username"是RDL的参数之一,它带有默认值,我正在尝试使用以下代码更改它.
替换其中一个ReportParameters:
var userParameter = GetUserParameter();
if (userParameter != null)
{
newParameters.Remove(newParameters.FirstOrDefault(param => param.Name.Contains(CurrentUserParameterName)));
newParameters.Add(userParameter);
}
Run Code Online (Sandbox Code Playgroud)
查找用户名ReportParameters:
var paremeters = ReportViewer.ServerReport.GetEditableHiddenParameters();
//finds parameter by its name, pelase view const value in CurrentUserParameterName
var userParameter = paremeters.FirstOrDefault(param => param.Name.Contains(CurrentUserParameterName));
if (userParameter != null)
{
userParameter.Values.Clear();
userParameter.Values.Add(Utils.GetUserName());
}
return userParameter;
Run Code Online (Sandbox Code Playgroud)
将参数设置为ServerReport:
ReportViewer.ServerReport.SetParameters(parameters);
Run Code Online (Sandbox Code Playgroud)
运行报告后,我收到消息"'用户名'参数缺少值"
当我调试并查看ServerReport.GetParameters()
我可以看到我确实有ReportParameter"用户名"时,我确实有值(新值),但其状态为"MissingValidValue".
我究竟做错了什么?在此先感谢,艾迪
我有一个显示表格的RDLC报告.在某些条件适用的情况下,此表中的某一行不应出现.如果这些条件适用,我可以使用表达式将Hidden属性设置为false.
问题是,虽然隐藏了,但行仍然在表中发生,即它没有崩溃.
如何折叠它而不是简单地隐藏它?
我正在使用RDLC与报表查看器2010 SP1
好吧,我可能一直在谷歌搜索错误的搜索条件,但我找不到如何使用RDLC制作MS-Access风格带状报告(这是Visual Studio 2010中的残缺报告设计者,而不是BIDS)并且带状我是说,一个包含组头和子组头的报告 - 不是交替的颜色带.
我有一个带有List,Tablix和Matrix的工具箱,它们的行为都相同 - 我不断得到看起来像MS-Access CrossTabs的东西.我可以得到这个:
Country Population Date
---------------------------
Spain 1 million 1982
Spain 1.1 million 1983
China 1 billion 1982
China 1.2 billion 1983
Run Code Online (Sandbox Code Playgroud)
我也可以在行上获取国家,在列上显示年份并在中心弹出,例如交叉表,但我不想要交叉表.另外,我不想要行标题,除了相同的单元格合并之外,它们与上面的标题完全相同.
但我不能得到这个:
---------------
Spain
---------------
Population Date
1 million 1982
1.1 million 1983
---------------
China
---------------
Population Date
1 billion 1982
1.2 billion 1983
Run Code Online (Sandbox Code Playgroud)
甚至可以用RDLC吗?
更多信息 Reporting Services是Microsoft发布的服务器产品,随客户端调用Business Intelligence Development,简称BIDS.前者使用RDL,后者使用RDL(RDL是基于XML的报告语言).我没有其中任何一个.
我有ReportViewer,它是一个ASP.NET控件,可以读取RDLC(RDL的一个残缺的子集),我有Visual Studio 2010,它有一个残缺的BIDS版本.Visual Studio 2010中的工具箱有一个列表,一个Tablix和一个Matrix,它们看起来都是具有不同默认启动属性的相同控件.在MS-Access中创建名称为Crosstabs的内容很容易,但是试错会产生一个带状报告,群组往往会产生任何东西.