在报表查看器控件中以编程方式设置边距

发布于 2024-08-18 14:23:55 字数 529 浏览 4 评论 0原文

在我们的应用程序中,我们有一些需要非常特定边距的报告,这些边距取决于用户拥有的打印机。它用于打印到预先格式化的纸张上,并填充空白,并且根据打印机的不同,打印会出现一些边距偏差。更糟糕的是,我们实际上并不控制使用什么打印机,因为它不是内部应用程序。

我能想到的唯一解决方案是让用户以某种方式配置边距。我以为我可以动态地更改报告边距,就像我对数据源和实际报告所做的那样(我有一个控件用于显示应用程序中的每个报告,它工作正常),但我似乎找不到那个该死的属性这样做。报表查看器上有一个边距属性,但它用于表单显示,因此不会剪切它。

有谁知道怎么办。我想做的是在用户加载报告之前定义边距,即当他单击报告按钮时,我加载报告,设置边距(反之亦然是必要的)然后显示它。

在有人提到它之前,我知道用户可以在加载报表后更改页面设置以满足他的需要,但这有两个缺点。第一个是它不是每次都保存,我需要它是“可保存的”并且由用户保存。第二个问题是,当区域设置未设置为预期的值时,报表查看器似乎存在一些错误,并且我们无法强制用户更改其设置以适应某个应用程序。

编辑:忘了提及,这有什么用处。我的报道都是本地报道。

In onw of our application, we have some reports that need very specific margins that are dependant of the printer the user have. It is used to print into preformatted paper with blanks to fill and depending of the printer, the printing is off by some margins. To make things worse, we don't actually control what printer is used because it is not an internal application.

The only solution I could think of is to let the user configure the margins somehow. I thought I could just dynamically change the report margins like I did with datasources and actual report (I have one control that is used to display every reports from my application and it works alright), but I can't seem to find that damn property to do so. There is a margin property on the report viewer but it's for the form display so it doesn't cut it.

Does anyone knows how to. What I was thinking to do is to define the margins before the user loads the report, i.e. when he clicks on the report button, I load the report, set the margins (or vice-versa is necessary) and then display it.

Before someone mention it, I know the user can, once the report is loaded, change the page setup to fit his needs, but this has two drawbacks. First one is that it is not saved each time and I need it to be 'saveable' and by users. The second one is that Report viewer seems to have some bugs when the regional setting aren't set to what it's expecting and we can't force the users to changes their setting to accommodate one application.

Edit: Forgot to mention, it this is of any uses. My reports are all local reports.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

臻嫒无言 2024-08-25 14:23:55
    '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)
    '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)
酒与心事 2024-08-25 14:23:55

你不能直接这样做。尝试使用报表参数控制报表中的边距。

You can't do this directly. Try controlling your margins in the report with report parameters.

不必在意 2024-08-25 14:23:55

嗯,我刚刚遇到了类似的问题;需要一份具有 0 英寸边距的报告,否则该死的东西会从 2 页变成 6 页,并且它垂直分割数据,因此页面没有任何意义。我必须在“打印设置”中手动设置才能打印,但是这份报告的最终目标是以 PDF 形式通过电子邮件发送给客户,你猜怎么着,当我手动设置页边距并导出时,它仍然分成 6 页并被炸毁,因此我冒着一切风险,尽了最后的努力来修复。这该死的东西 - 我用写字板打开了.rdlc,奇迹中的奇迹,发现了1in,等等。我将所有这些buggers设置为0in,保存,运行我的.net代码(2008),打开打印设置,然后哈利路亚,这是我的 0in 设置。现在进行最高测试 - 我将其导出为 PDF,转到文件,真是太棒了!有两个清晰干净的布局完美的页面,一切都很仁慈。我平静下来,让米迪克罗安流过我的身体,享受着一个罕见的时刻,这是一些人很少意识到的——一个简单的修复。

Well, I just had this similar problem; needed a report to have 0" margins, otherwise the blasted thing went from 2 pages to 6, and it split the data vertically, so the pages made no sense. I was having to set it manually in the Print Setup to print, but the end goal of this report is to be emailed to customers as a PDF, and guess what, when I set the margins manually and exported, it still split into 6 pages and bombed out. So risking everything, I tried one last supreme effort to fix this blasted thing - I opened up the .rdlc with word pad, and miracle of miracles, found 1in, etc. I set all those buggers to 0in, saved, ran my .net code (2008), opened up Print Setup, and hallelujah, there was my 0in settings. Now for the supreme test - I exported it as a PDF, went to the file, and son of a gun! Sweet. There were two crisp clean perfectly laid out pages. All was beneficent in the universe, I calmed down and let the midiclorians flow through me, and just basked in a moment so rare that it is rarely realized by some - a simple fix.

蒲公英的约定 2024-08-25 14:23:55

Check out the ReportPageSettings class, part of the report viewer control. Setting those values looks like it should get you what you need.

乙白 2024-08-25 14:23:55

更多设置;

        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)

More settings;

        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)
︶葆Ⅱㄣ 2024-08-25 14:23:55

这段代码适用于我,mm 中的数字

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

this code work with me, the numbers in mm

Dim newPageSettings As New System.Drawing.Printing.PageSettings
newPageSettings.Margins = New System.Drawing.Printing.Margins(50, 100, 45, 45)
ReportViewer1.SetPageSettings(newPageSettings)

im using vb.net 2013

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文