2010-01-18 109 views
1

在我們的應用程序中,我們有一些需要非常具體的邊距的報表,這些邊距取決於用戶具有的打印機。它用於打印預成型的紙張,並帶有空白以填充並取決於打印機,打印在某些空白處關閉。更糟的是,我們實際上並不控制使用什麼打印機,因爲它不是內部應用程序。以編程方式在報表查看器控件中設置頁邊距

我能想到的唯一解決方案是讓用戶以某種方式配置邊距。我雖然可以只是像dinasyally改變報告的邊際,就像我對數據源和實際報告(我有一個控制,用來顯示我的應用程序的每個報告,它工作正常),但我似乎無法找到該死的財產這樣做。報表查看器上有一個保證金屬性,但它是用於表單顯示的,因此它不會剪切它。

有沒有人知道如何。我想要做的是在用戶加載報告之前定義邊距,即當他點擊報告按鈕時,我加載報告,設置邊距(反之亦然),然後顯示它。

在有人提到它之前,我知道用戶可以在加載報告後更改頁面設置以適應他的需求,但這有兩個drawbakcs。首先,它不會每次都保存,我需要它是'可保存的'和用戶。第二個是當區域設置沒有設置爲期望值時,Report viewer似乎有一些錯誤,我們不能強制用戶更改其設置以適應一個應用程序。

謝謝。

Eidt:忘了提及,它有任何用途。我的報告都是本地報告。

+0

忘了提及,我不在乎它是如何完成的,只要它完成了......我不在乎是否必須創建報告文件的副本並編輯文件'手動',如果這是唯一的方法來做到這一點...其實這將工作,但我寧願找到一個更優雅的方式 – 2010-01-18 13:50:47

回答

2

你不能直接這樣做。嘗試使用報告參數控制報告中的利潤率。

+0

不知道我明白你的意思嗎?如果你的意思是在設計模式中,那麼我真的不能這樣做。就像提到的那樣,我需要能夠讓任何用戶根據他的打印機改變它。我知道這很麻煩,但我不能談判。相信我,我試着......:o – 2010-01-18 13:57:17

+0

在設計模式中,不是輸入數字值,而是使用引用報告參數的表達式。您可以讓用戶在呈現報告時鍵入參數或以其他方式提供參數。 – cdonner 2010-01-18 14:15:12

+0

這將是非常好的,但它不起作用。 我已經厭倦了,當我輸入其他東西而不是絕對值(意思是我試着做Parameters!MarginLeft.Value)時,它給了我一個錯誤。我試着用CDbl(Parameters!MarginLeft.Value),我得到了相同的結果 – 2010-01-18 16:47:29

1

查看ReportPageSettings class,這是報表查看器控件的一部分。設置這些值看起來應該會得到您所需的值。

+0

聽起來不錯,但我似乎無法找到如何設置值(是否在本地報告屬性,報告查看器還是其他?) – 2010-01-18 13:48:11

+0

它們是隻讀的,它不起作用。 – cdonner 2010-01-18 13:49:31

2

嗯,我只是有這個類似的問題;需要一個報告有0「的空白,否則被抨擊的事情從2頁到6,它垂直分割數據,所以頁面沒有任何意義,我不得不在手動打印設置打印,但本報告的最終目標是通過電子郵件發送給客戶作爲PDF,並猜測當我手動設置邊距並導出時,它仍然會分成6頁並被轟炸出去。所以冒着一切風險,我嘗試了最後一次最大的努力來修復這個抨擊的東西 - 我打開了帶有文字板的.rdlc,奇蹟奇蹟,發現了1in等。我將所有這些bugger都設置爲0in,保存,運行我的.net代碼(2008),打開Print Setup和hallelujah ,那裏有我的0in設置,現在進行最高級的測試 - 我把它作爲一個PDF文件導出,然後去了一個文件,還有一把槍的兒子!甜蜜的,有兩張乾淨整潔的頁面,在宇宙中都是有益的,我平靜下來,讓這些分散在我身邊的人流了出來,只是沐浴在一個非常罕見的時刻,很少有人實現 - 一個簡單的修復。

+0

我意識到這個解決方案並不包括爲不同的用戶動態改變報表頁邊距。但是,它解決了我需要爲給定報告設置自定義邊距的問題。如所描述的以上我打開要編輯的文件.rdlc並發現這些行: 1英寸 1英寸 1英寸 1英寸 我編輯那些和跑的報告其中有自定義邊距設置。 – Baxter 2012-03-07 15:57:05

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) 
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) 
相關問題