Search…

WPF - Report Viewer Tutorial

24/09/20203 min read
Report Viewer là một công cụ hỗ trợ tiện dụng trong bộ thư viện dot NET của Microsoft giúp lập trình viên xuất báo cáo dựa trên dữ liệu có sẵn trong hệ thống.

Report Viewer là gì ?

Report Viewer là một công cụ hỗ trợ tiện dụng trong bộ thư viện dot NET của Microsoft giúp lập trình viên xuất báo cáo dựa trên dữ liệu có sẵn trong hệ thống.

Tuy nhiên, với công nghệ WPF thì control này không mặc định tồn tại nên phải chủ động thêm vào.

Hướng dẫn

Bước 1: tạo Window mới

Tạo 1 cửa sổ mới.

Chọn project hiện tại, nhấn chuột phải bấm vào menu Add.. chọn Window, nhấn chuột phải vào cửa sổ vừa tạo ở khung Solution Explorer và chọn Add Reference.

WPF report viewer tutorial .Net

Bước 2: thiết lập WindowsFormsHost

Ở trang xaml của cửa sổ vừa tạo, kéo thả control WindowsFormsHost vào cửa sổ vừa tạo và thiết lập như sau:

<Window x:Class="WpfApplication1.MainWindow"
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	xmlns:rv="clr-namespace:Microsoft.Reporting.WinForms;
		assembly=Microsoft.ReportViewer.WinForms" 
	Title="MainWindow" Height="350" Width="525">
    <Grid>
        <WindowsFormsHost VerticalAlignment="Top" HorizontalAlignment="Left" 
			Width="100" Height="100" Margin="127,191,0,0"/>
        <WindowsFormsHost>
            <rv:ReportViewer x:Name="_reportViewer"/>
        </WindowsFormsHost>
    </Grid>
</Window>

Bước 3: thiết lập Report Wizard

Chuột phải vào project và chọn Add new item, chọn Report Wizard.

WPF report viewer tutorial .Net

Bước 4: thiết lập dataset

Lần lượt thiết lập Data Set trong cửa sổ Report Wizard.

WPF report viewer tutorial .Net

Chọn Database và bấm Next.

WPF report viewer tutorial .Net

Chọn Dataset và bấm Next.

WPF report viewer tutorial .Net

Khi chọn New Connection.. để thêm database vào project.

Ở đây thêm database "RAPCHIEUPHIM".

Sau đó bấm Next sẽ hiện cửa sổ như trên, chọn "No".

WPF report viewer tutorial .Net

Chọn Next và đợi load dữ liệu từ database.

WPF report viewer tutorial .Net

Ở khung DataSet name, đặt tên cho Data set source, lưu ý nên đặt tên dễ lưu nhớ vì tên này sẽ dùng để truy xuất data set ở trong phần tải report.

Một dataset bao gồm nhiều thành phần của database tạo nên, chọn Data Set là bảng KHACHHANG.

Sau khi đã chọn và đặt tên, bấm Finish.

WPF report viewer tutorial .Net

Sau khi cửa sổ này xuất hiện, đặt tên cho Data set và bấm Next.

WPF report viewer tutorial .Net

Chọn thuộc tính của Data set sẽ hiển thị trong report, ở đây chọn hiển thị tất cả các thuộc tính của Bảng KHACHHANG nên kéo thả toàn bộ thuộc tính ở vùng “Available fields” sang vùng “Values”.

Sau khi đã chọn thuộc tính cần hiển thị, bấm Next.

WPF report viewer tutorial .Net

Bấm Next để tiếp tục.

WPF report viewer tutorial .Net

Chọn style của report, ở đây để mặc định và bấm Finish để hoàn tất.

Bước 5: thiết lập cửa sổ hiện thị report

Thiết lập trong file .cs của cửa sổ hiển thị report.

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        _reportViewer.Load += ReportViewer_Load;
    }

    private bool _isReportViewerLoaded;

    private void ReportViewer_Load(object sender, EventArgs e)
    {
        if (!_isReportViewerLoaded)
        {
            Microsoft.Reporting.WinForms.ReportDataSource reportDataSource1 = 
                        new Microsoft.Reporting.WinForms.ReportDataSource();

            NameOfDataSet dataset = new NameOfDataSet();
            dataset.BeginInit();

            reportDataSource1.Name = "NameOfDataSet";
            reportDataSource1.Value = dataset.KHACHHANG;
            this._reportViewer.LocalReport.DataSources.Add(reportDataSource1);
            this._reportViewer.LocalReport.ReportEmbeddedResource =
                        "WpfApplication1.NameOfReport.rdlc";

            dataset.EndInit();

            //fill data into adventureWorksDataSet
            NameOfDataSetTableAdapters.KHACHHANGTableAdapter datasetAdapter =
                        new NameOfDataSetTableAdapters.KHACHHANGTableAdapter();

            datasetAdapter.ClearBeforeFill = true;
            datasetAdapter.Fill(dataset.KHACHHANG);

            _reportViewer.RefreshReport();

            _isReportViewerLoaded = true;
        }
    }
}

Kết quả 

WPF report viewer tutorial
IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024