如何制作Drill-Down向下鉆取報表,為數(shù)據(jù)分析提供多種交互能力
分組報告是數(shù)據(jù)分析所必需的。但是當(dāng)有大量數(shù)據(jù)并且不需要全部顯示時,帶有分組的常規(guī)報告變得麻煩且多余。您希望為此類案例找到通用解決方案嗎?這里正好有一個。
帶有下拉列表的報告本質(zhì)上是一個包含分組數(shù)據(jù)的報告,但能夠通過鼠標(biāo)單擊隱藏或顯示組中的數(shù)據(jù)。它不僅非常方便,而且美觀。畢竟,報告成為一個交互式對象。當(dāng)用戶可以參與信息顯示時,用戶會很高興。
考慮如何制作此類報告的示例。首先,與Master-Detail主從報表一樣(點擊這里查看如何制作Master-Detail主從報表>>),我們需要一個包含鏈接表的數(shù)據(jù)源。假設(shè)我們有兩個表:客戶和訂單。
一個客戶可以做很多訂單——一對多的關(guān)系。我們加上吧。單擊Actions按鈕,然后從下拉列表中選擇New Relation ...
父表是主表,然后選擇“customer”。子表分別是“orders”。在“customer”中有一個主鍵CustNo,在列表中選擇它。在“orders”中有一個外鍵CustNo,也選擇它。
結(jié)果,我們獲得了連接:
現(xiàn)在讓我們開始創(chuàng)建報告模板。添加一個頻段“group header”。在它上面我們將放置鏈接中的字段:“orders.customer.Company”、“orders.customer.Addr1”、“orders.customer.Phone”、“orders.customer.Contact”。
除了這些字段之外,我們還要為此頻段添加一個復(fù)選框控件。在CheckedSymbol屬性中,選擇Plus,然后選擇UncheckedSymbol - Minus。
添加“orders”表中的字段:OrderNo、SaleDate、PaymentMethod、AmountPaid到“Data”頻段。另外,為數(shù)據(jù)和字段標(biāo)題添加標(biāo)題區(qū):
雙擊組標(biāo)題“Headline”。選擇要分組的字段:
現(xiàn)在選擇我們之前添加的復(fù)選框。給它一個Hyperlink屬性:
選擇“Group Header”區(qū)域并為其創(chuàng)建BeforePrint事件處理程序:
private void GroupHeader1_BeforePrint(object sender, EventArgs e) { string groupName = (String)Report.GetColumnValue("orders.customer.Company"); // get the group name bool groupVisible = expandedGroups.Contains(groupName); // Check group visibility DataHeader1.Visible = groupVisible; Data1.Visible = groupVisible;// Set the visibility of data in accordance with the visibility of the group GroupFooter1.Visible = groupVisible;// Set the visibility of the basement of the group in accordance with the visibility of the group CheckBox1.Checked = !groupVisible;// Set the state of the flag depending on the visibility of the group }
還要向類添加擴展組列表:
private List expandedGroups = new List();
讓我們回到我們的復(fù)選框。為此,創(chuàng)建一個Click事件處理程序:
private void CheckBox1_Click(object sender, EventArgs e) { string groupName = (sender as CheckBoxObject).Hyperlink.Value; // We get the name of the group from the hyperlink if (expandedGroups.Contains(groupName)) // If the list of visible groups contains the selected group expandedGroups.Remove(groupName); // Then remove the selected from the list of visible groups. else expandedGroups.Add(groupName); // Otherwise add the group to the list of visible Report.Refresh(); // Update Report }
以預(yù)覽模式運行報告:
現(xiàn)在點擊任何加號:
當(dāng)您單擊減號時會分組折疊。大神們都表示同意,這樣確實很方便。
產(chǎn)品介紹 | 下載試用 | 優(yōu)惠活動 | 在線客服