在我们的应用程序中,我们有一些报告需要非常具体的边距,这取决于用户拥有的打印机。它用于打印到预先格式化的纸张中,并使用空白来填充,并且根据打印机的不同,打印会有一定的余量。更糟糕的是,我们实际上并没有控制使用什么打印机,因为它不是内部应用程序。
我能想到的唯一解决方案是让用户以某种方式配置边距。我虽然可以像在数据源和实际报告中那样用dinamycally改变报告边距(我有一个用于显示我的应用程序的每个报告的控件,它可以正常工作),但我似乎无法找到该死的属性这样做。报表查看器上有一个margin属性,但它适用于表单显示,因此不会删除它。
有谁知道怎么做。我想要做的是在用户加载报告之前定义边距,即当他点击报告按钮时,我加载报告,设置边距(反之亦然),然后显示它。
在有人提到它之前,我知道用户可以在加载报告后更改页面设置以满足他的需要,但这有两个drawbakcs。第一个是它每次都没有保存,我需要它是“可保存的”和用户。第二个是当区域设置未设置为预期时,报表查看器似乎有一些错误,我们无法强制用户更改其设置以容纳一个应用程序。
谢谢。
Eidt:忘记提及,这是有用的。我的报告都是本地报道。
答案 0 :(得分:3)
'creates a new page setting
Dim instance As New PageSettings()
'create the new margin values (left,right,top,bottom)
Dim value As New Margins(0, 0, 0, 0)
'gives your new pagesetting a value
instance.Margins = value
'report viewer now sets your margins
ReportViewer1.SetPageSettings(instance)
答案 1 :(得分:2)
你不能直接这样做。尝试使用报告参数控制报告中的边距。
答案 2 :(得分:2)
嗯,我刚遇到类似的问题;需要一个报告有0“边距,否则爆炸的东西从2页到6,它将数据垂直分割,所以页面没有任何意义。我不得不在打印设置中手动设置打印,但是这份报告的最终目标是以PDF格式通过电子邮件发送给客户,并猜测,当我手动设置边距并导出时,它仍会分成6页并被轰炸。所以冒着一切危险,我尝试了最后一次努力修复这个爆炸的东西 - 我用字垫打开了.rdlc,奇迹的奇迹,找到了1英寸等等。我把所有那些bugger设置为0in,保存,运行我的.net代码(2008),打开打印设置,哈利路亚,我的0in设置。现在进行最高级别的测试 - 我将其导出为PDF格式,然后输入文件,以及枪支之子!甜蜜。有两个清晰干净的完美布局页面。所有这些都在宇宙中是有益的,我平静下来,让midiclorians流过我,只是沉浸在一个非常罕见的时刻,很少有人意识到 - 简单的修复。
答案 3 :(得分:1)
查看报告查看器控件的ReportPageSettings class部分。设置这些值看起来应该可以满足您的需求。
答案 4 :(得分:0)
更多设置;
Dim myPageSettings As New PageSettings()
myPageSettings.Margins = New Margins(0, 0, 0 , 0)
Dim paperSize As PaperSize = New PaperSize()
'ToDo: update with the PaperKind
'that your printer uses
paperSize.RawKind = PaperKind.A4
' paperSize.RawKind = System.Drawing.Printing.PaperKind.A4
myPageSettings.PaperSize = paperSize
'False for "Portrait"
'True for "Landscape"
myPageSettings.Landscape = False
'report viewer now sets your margins
ReportViewer1.SetPageSettings(myPageSettings)
答案 5 :(得分:0)
此代码对我有用,以毫米为单位的数字
Dim newPageSettings As New System.Drawing.Printing.PageSettings
newPageSettings.Margins = New System.Drawing.Printing.Margins(50, 100, 45, 45)
ReportViewer1.SetPageSettings(newPageSettings)
我正在使用 vb.net 2013