解决 RDLC 报表自动分页表头显示问题
原文:http://www.th7.cn/Program/net/201207/85445.shtml
RDLC是用XML来描述一个报表相关的一切,只需要在<TablixMember>节点添加<RepeatOnNewPage>true</RepeatOnNewPage>子节点就可以,并设定值为true.
有些朋友在VS环境中无法打开XML编辑方式,这里我提示一下,你可以去工程目录下用记事本打开扩展名为RDLC的文件,也可以直接在VS中搜索<TablixMember>,并设定查找范围为“当前项目”,默认会在VS环境打开该报表
以下是报表部分节点
<TablixMembers>
<TablixMember>
<KeepWithGroup>After</KeepWithGroup>
<RepeatOnNewPage>true</RepeatOnNewPage>
</TablixMember>
<TablixMember>
<Group Name="详细信息" />
</TablixMember>
</TablixMembers>
</TablixRowHierarchy>
左边的报表数据窗口没了怎么办?
在RDLC的设计界面,有个data菜单,选择show data sources 或 shift + alt + D 出来datasource工具栏
错误:无法显示子报表
网上解决方法:(不理解,记录下备用)
解决:在主报表里面,给子报表设置参数
尚未为数据源“Sales_Quotation_Detail”提供数据源实例
原因:为主表指定了多余的数据源
个人解决方法:
1.添加一个新数据源(如data.xsd),为数据源添加table,字段名必须和 后台数据源 的table的字段名完全一致
2.确认给子报表设置的参数名的准确性,大小写必须与数据源完全一致
Rdlc报表出现空白页解决方法
在使用RDLC报表时,碰到这种情况:当只有一页数据时,报表却显示两页,第二页除了报表头之外数据为空。然后,当有多页数据时,最后一页为空。
RDLC报表设计好后,在ReportViewer预览报表时,页数都正常;但在切换为整页模式时,常造成多了不少空白页出来。第一时间觉得不可思议,在ReportViewer看来正常,怎可能在整页预览时,格式会跑掉?如果在整页预览时格式跑掉,那在打印时也一定是这样的情形。ReportViewer会将RDLC所设计的报表文件显示其中,但和实际纸张打印时,并不是如此,因此时就要检查RDLC报表本身的大小。
1.先至Report.rdlc报表设计的页面,选择菜单上的[报表]->[报表属性],在[配置]的页签中记录着输出报表的纸张大小,预设应为A4直式的纸张(页宽:21cm,页高:29.7cm,左右上下边界:2.5cm),记下这些值。
2.检查Report.rdlc的属性窗口中[主体]属性的Size值,它的宽度Width要小于[报表属性]中的(页宽)– (左边界)– (右边界)。
3.调整后再整页预览看看,多调几次应就不会再产生太多的空白页了。
这个问题很奇怪,网上有很多解决方案,以下的方法可以解决此问题。
方法一:设置报表的属性 ConsumeConteinerWhitespace = True
第一种方法具体操作:
1,选中要修改的报表按F4 ,将下拉列表中的【主体】换选中【报表】
2,选择【报表】后就出现了ConsumeConteinerWhitespace 的属性,默认是false,改成True即可解决空白行的问题
方法二:在Row Group 中设置 Keep Together = False, 进入Advance Mode,设置所有Static成员的Keep Together = False
对于一些报表,调整Body的宽度和高度,直到和Report的宽度和高度差不多就行了。操作就是将body的边框拖到和Report平齐。
这么说来,这就是个非常简单的问题,是由于Body的宽度太宽或高度太高引起的。
附件截图设置RDLC报表属性
解决WIN7下添加Microsoft XPS Document Writer
最近做一个项目需要打印功能,但是又没有打印机来真实测试,就想起OFFICE里有虚拟打印机,可以直接用,解决方法很简单,如下:
控制面板-所有控制面板选项-管理工具,在这里双击打印管理,点打印服服务器,会发现在“驱动程序”里存在Microsoft XPS Document Writer,如图:
在打印服务器里面的“打印机”选项上右键-添加打印机,如图:
然后选择第三个单选按钮,下一步
下一步在“使用计算机上现有的打印机驱动程序”里选择【Microsoft XPS Document Writer】即可。如图:
最后一直下一步就可以了(当然也可以取消共享打印机和设为默认打印机)。