Devexpress Xtrareport 並排報表


什么是並排報表呢?

  

按照我個人理解:並排報表是把兩張或者兩張以上的報表,放在一個報表頁面。

注:為了方便,本示例使用同一個數據源,但是您可以使用相同的方法,而在一個報表文檔中顯示兩個完全不同的 (使用不同數據源的) 報表。

依照慣例,我們先來看看我們最后實現的效果,如圖:

  

 

第一步:窗體布局。

新建一個WinForm窗體,,拉入第三方控件SimpleButton,DocumentViewer,SplitContainerControl,LabelControl,TextEdit,GroupControl,無非就是設置空間Dock屬性,還有字體Text屬性等,簡單布局我就不多闡述了。可以參考系列第一篇。

 

第二步:創建兩個個Devexpress XtraReport報表文件。一個是明細報表DetailSideBySideRpt(用於綁定到最后顯示的並排報表MasterSideBySideRpt),一個是最后顯示的並排報表MasterSideBySideRpt  如圖:

   

  然后新建一個MasterSideBySideRpt,如圖:

    

 

那如何把我們新建的DetailSideBySideRpt報表,並排顯示到MasterSideBySideRpt呢?

 

方法一:添加控件XrSubreport 如圖:

  

 

也可以手動添加代碼

this.xrSubreport1.ReportSource = new 創建並排報表.DetailSideBySideRpt();

this.xrSubreport2.ReportSource = new 創建並排報表.DetailSideBySideRpt();//這里我並排的兩張報表都使用了同一個DetailSideBySideRpt,可以使用不同的

Form代碼

  

 1       /// <summary>
 2         /// 獲取數據集
 3         /// </summary>
 4         /// <returns>返回數據集</returns>
 5         private DataSet Getdataset()
 6         {
 7             DataSet ds = new DataSet();
 8             string cstr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString.ToString();
 9             SqlConnection mycon = new SqlConnection(cstr);
10             try
11             {
12                 mycon.Open();
13                 SqlCommand mycom = new SqlCommand("select * from jiaochainfo", mycon);
14                 SqlDataAdapter dpt = new SqlDataAdapter(mycom);
15                 dpt.Fill(ds, "jiaochainfo");
16                 mycon.Close();
17             }
18             catch (Exception ex)
19             {
20 
21                 MessageBox.Show(ex.Message);
22             }
23 
24             return ds;
25         }
26         //點擊事件
27         private void simpleButton1_Click(object sender, EventArgs e)
28         {
29             DataSet ds = Getdataset();
30             XtraReport1 report = new XtraReport1(ds);
31             report.Landscape = true;
32             MianXtrareport rpt = new MianXtrareport(ds);
33             rpt.Landscape = true;
34             documentViewer1.DocumentSource = rpt;
35             //顯示主報表的文檔
36             rpt.CreateDocument();
37         }
38 
39     }

詳細報表代碼

  

 1       
 2         //構造數據參數綁定字段
 3         public XtraReport1(DataSet ds)
 4         {
 5             InitializeComponent();
 6             this.DataSource = ds;
 7             this.DataMember = "jiaochainfo";
 8             this.xrLabel1.DataBindings.Add("Text",ds,"name");
 9             this.xrLabel2.DataBindings.Add("Text",ds,"sex");
10             this.xrLabel3.DataBindings.Add("Text",ds,"older");
11         }

主報表代碼

  

 1        //主報表構造函數
 2         public MianXtrareport( DataSet ds)
 3         {
 4             InitializeComponent();
 5             //關鍵的一步,xrsubreport 控件的報表源等於 xtrareport
 6             this.xrSubreport1.ReportSource = new 並排報表.XtraReport1(ds);
 7             this.xrSubreport2.ReportSource = new 並排報表.XtraReport1(ds);
 8 
 9         }
10 
11         //在顯示之前的事件,利用FilterString屬性過濾數據源
12 
13         private void xrSubreport1_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
14         {
15             //jtype為數據庫庫的字段
16             ((XRSubreport)sender).ReportSource.FilterString = "jtype =='體育明星'";
17         }
18         //利用FilterString屬性過濾數據源
19 
20         private void xrSubreport2_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
21         {
22             ((XRSubreport)sender).ReportSource.FilterString = "jtype =='影視明星'";
23         }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM