2010-03-08 46 views
7

我有一個可自定義的rdlc報告,用戶可以選擇顯示哪些列。所有列都包含在報表設計器中,我使用參數根據用戶的選擇來隱藏/顯示列。該報告正確呈現,並且只顯示選定的列,但是,報告的總寬度與所有列都可見時相同。這意味着報告可能在選定列的右側有一個巨大的空白區域,這看起來非常愚蠢。當某些列隱藏時,如何調整rdlc報告的總寬度?

所以我的問題:有沒有辦法在運行時動態調整報表的寬度,以避免在報告中大傻空白區域?我試圖在設計器中通過爲報表主體的寬度分配一個參數來做到這一點......但這是不允許的。寬度不能是設計器中的任何形式的表達式,只允許實際值。

有什麼建議嗎?

回答

0

報表的實際寬度在設計器中是固定的,所以報表本身不能在運行時調整大小。在報表設計器中,沒有辦法分配表達式或爲報表,頁面或主體動態分配寬度值,這是正確的。

然而,容器爲RDLC報告的寬度可以在運行時進行控制。如果您將報表查看器放置在面板控件中,則應該能夠實現所需的輸出。由於您的用戶界面允許用戶決定包含哪些列,因此您應該可以將寬度值附加到每個可選列,然後對這些列進行求和並根據需要調整容器的大小。

請記住,如果你重新大小的容器中的報告簡單內的空格問題變成了表格上的空白問題。報告周圍的空白空間仍然很緊密,空白空間可能就是你想要的。

HTH &乾杯,

CEC

+0

您可以通過將rdlc加載到XmlDocument對象並調整「size」元素來調整列的寬度。我一直這樣做,以便在運行時隱藏列。 – clamchoda 2014-12-01 17:43:15

1

我有可能是愚蠢的一種變通方法,但至少它爲我的作品; 因此,在完成rdlc報告設計器後,關閉它,然後使用xml編輯器打開rdlc報告,然後在<body>...</body>標記後面的<Report>標記內可以看到包含報告寬度的<width>...</width>標記,修改它的值到一個非常小的值(可以說<width>1in</width>),這應該使報告顯示沒有愚蠢的空間。

但請記住,如果你在設計器中打開RDLC報告,將寬度重置爲視圖區域,這樣的問題會再次出現,所以做到這一點你從報告完成後。

我知道它的一個愚蠢的解決方案,但它在開發者側比在客戶端^ _ ^更好的傻。

希望這會有所幫助。

1

如果有可能可以增加另一列的寬度來填充空白空間。 我解決了這個問題如下。

例如我有'名稱'和'折扣'欄。折扣可以隱藏,我應該將Name.Width更改爲Name.Width + Discount.Width。

我做了一個新列(稱之爲「NameExt」)直接從「名稱」具有相同的寬度Discount.Width列。合併「名稱」列和「名稱文本」列的單元格。然後設置'折扣'的可見性規則和'NameExt'的反向可見性規則。

希望這可以幫助。