FastReport.Net報(bào)表生成器:如果沒有數(shù)據(jù),如何隱藏列表中的列
制作報(bào)表時(shí),我們希望它對(duì)使用者盡可能“友好”。太多的數(shù)據(jù)和設(shè)計(jì)元素處理使人們對(duì)信息的理解更加不利。比如,許多人希望刪除表中的沒有數(shù)據(jù)的空格。FastReport.Net報(bào)表生成器使您可以執(zhí)行此功能。如您所知,不僅需要隱藏該列,而且還需要為其隱藏標(biāo)題。如果用鼠標(biāo)單擊幾下即可隱藏一列,那么隱藏標(biāo)題任務(wù)卻并非易事。
假設(shè)我們有一個(gè)表,要從中顯示報(bào)表中的數(shù)據(jù)。但是,某些數(shù)據(jù)可能會(huì)丟失或設(shè)置為零。在這種情況下,我們可以使用“條件選擇”工具隱藏零數(shù)據(jù)單元。選擇所需的單元格,然后單擊工具欄上的圖標(biāo):
添加條件時(shí),默認(rèn)情況下將檢查零。那就是我們所需要的。我們僅選擇顯示選項(xiàng)。在我們的例子中,我們刪除可見的標(biāo)志:
因此,通過這些非精簡(jiǎn)的操作,我們已經(jīng)實(shí)現(xiàn)了隱藏的零數(shù)據(jù)單元。但這并不能解決所有問題。我們的任務(wù)是在沒有值大于零的情況下隱藏整個(gè)列的標(biāo)題。此列中的空白將檢查每頁的輸出。
要檢查給定列中頁面上是否沒有數(shù)據(jù),我們將使用“結(jié)果”。
該結(jié)果由給定的列求和,并匯總其中的所有值。如果總數(shù)為零,則該列中沒有單個(gè)值大于零,因此您需要隱藏該列的標(biāo)題。
現(xiàn)在,讓我們添加結(jié)果:
結(jié)果放入“頁腳”區(qū)域中:
然后可以使用“visible”屬性隱藏結(jié)果。
然后,讓我們?cè)O(shè)置邏輯以隱藏最后一列的標(biāo)題。代替RUB文本,我們引入表達(dá)式:
[IIf([Total]!=0,Text14.Text = "RUB",Text14.Text = "")]
但是,這還不是全部。由于結(jié)果是在頁面上顯示標(biāo)題和數(shù)據(jù)之后形成的,因此在執(zhí)行我們上面介紹的表達(dá)式時(shí),總價(jià)值無關(guān)緊要。因此,我們需要在列標(biāo)題中使用延遲表達(dá)式計(jì)算選項(xiàng),并對(duì)報(bào)表進(jìn)行兩次遍歷。
選擇一個(gè)帶有RUB列標(biāo)題的文本框。在文本字段的屬性中,我們找到ProcessAt并更改為PageFinished:
之后,我們需要打開報(bào)表屬性并安裝“Doublepass”選項(xiàng):
此選項(xiàng)使您可以兩次生成報(bào)表。在第一種結(jié)構(gòu)中,將計(jì)算所有結(jié)果,在第二種結(jié)構(gòu)中,這些結(jié)果可用于標(biāo)題。所有這些都是必要的,因?yàn)閳?bào)表在元素上是一致的。也就是說,在構(gòu)建下一個(gè)元素時(shí),您將無法更改前一個(gè)元素。因此,您需要進(jìn)行重新構(gòu)建,以考慮下一個(gè)元素的結(jié)果。
讓我們看看RUB列中所有數(shù)據(jù)何時(shí)為0時(shí)報(bào)表的工作方式:
在某些頁面上可以顯示數(shù)據(jù),因此該列也會(huì)顯示:
這樣,我們可以根據(jù)列中的數(shù)據(jù)動(dòng)態(tài)顯示或隱藏列。
產(chǎn)品介紹 | 下載試用 | 優(yōu)惠活動(dòng) |