Dùng WebBrowser control để tạo báo cáo
Thursday, November 15, 2007 3:27:37 AM
- Đầu tiên, bạn tạo một Form, rồi đưa thêm 1 WebBrowser control vào, tôi đặt tên nó là wbReportViewer, thông thường tôi hay để thuộc tính Dock của WebBrowser control này là Full. Nếu muốn bổ sung thêm một số chức năng khác như lưu nội dung báo cáo vào file thì bạn có thể đưa bổ sung thêm thanh công cụ vào Form này. - Bạn có thể xem qua và đặt một số thuộc tính cần thiết cho wbReportViewer, ví dụ tôi đặt các thuộc tính sau: * IsWebBrowserContextMenuEnabled = false: không cho phép hiển thị menu ngữ cảnh khi người dùng nhấn chuột phải vào trình duyệt. * AllowWebBrowserDrop = false: không cho thực hiện thao tác kéo thả và cửa sổ trình duyệt. * WebBrowserShortcutsEnabled = false: không cho dùng các phím tắt đối với trình duyệt. ... - Khi người dùng muốn xem báo cáo, bạn sẽ sinh ra nội dung và gán vào thuộc tính DocumentText của wbReportViewer, nội dung sẽ được hiển thị trên cửa sổ giống như khi bạn xem trên Internet Explorer. Đây là ví dụ về một thủ tục mở cửa sổ báo cáo của tôi:
Private Sub cmdOpenReport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOpenReport.Click
Dim frmReport As New ReportForm
Dim html As New StringBuilder
html.AppendLine("<html>")
html.AppendFormat("<body>")
html.AppendLine(reportContent) <---- Đưa nội dung báo cáo vào đây
html.AppendLine("<br /><hr />")
html.Append("</body></html>")
frmReport.wbMessage.DocumentText = html.ToString
frmReport.ShowDialog()
End Sub
Áp dụng định dạng
Như bạn thấy, mọi việc rất đơn giản, để áp dụng định dạng cho báo cáo bạn cugnx dùng những cách giống như trong HTML thường dùng, cách ưa thích của tôi là sử dụng CSS, cách này có nhiều điểm lợi: mã HTML đơn giản hơn, file CSS nằm riêng và có thể dùng trình soạn thảo CSS của Visual Studio để chỉnh sửa, ngoài ra mọi thay đổi trong file CSS sẽ được áp dụng cho tất cả những chỗ dùng nó. Để áp dụng CSS thì bạn có thể làm như sau:
- Tạo một file mới có tên Report.css, double-click lên file này để chỉnh sửa nội dung, một ví dụ về CSS như sau:
.report_header
{
font-weight: bold;
}
.report_item
{
color: blue;
}
body
{
font-size: 10pt;
font-family: verdana;
background-color: #fafad2;
}
- Vào menu Project/<Tên dự án> Properties, mục này thường nằm cuối cùng trong menu Project, trong cửa sổ này, bấm vào nút Resources, bấm tiếp vào hình tam giác bên phải nút Add Resource và chọn Add Existing File..., tìm đến file Report.css đã tạo ở trên và nhấn Open.
- Quay trở lại với thủ tục cmdOpenReport_Click ở trên, giờ bạn phải chỉnh sửa lại phần header của dữ liệu HTML để nó dùng CSS trong file Report.css, mấy dòng đầu để tạo HTML giờ sẽ đổi thành:
html.AppendLine("<html><head><style type=""text/css"">")
html.AppendLine(My.Resources.Report)
html.AppendLine("</style></head>")
- Việc cuối cùng là sử dụng các class CSS:
html.AppendFormat("<body>", "REPORT - " & DateTime.Now.ToString(My.Application.UICulture.DateTimeFormat)) html.AppendFormat("
Private Sub cmdOpenReport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOpenReport.Click
Dim frmReport As New ReportForm
Dim html As New StringBuilder
html.AppendLine("<html><head><style type=""text/css"">")
html.AppendLine(My.Resources.Report)
html.AppendLine("</style></head>")
html.AppendFormat("<body><b><div class='report_header'>{0}</div></b><br />", "REPORT - " & DateTime.Now.ToString(My.Application.UICulture.DateTimeFormat))
html.AppendFormat("<div class='report_item'>{0}<div>", reportContent) <---- [COLOR=green]Đưa nội dung báo cáo vào đây[/COLOR]
html.Append("</body></html>")
frmReport.wbMessage.DocumentText = html.ToString
frmReport.ShowDialog()
End Sub
OK, vậy là xong, nếu théc méc chỗ nào thì xin mời hỏi






Unregistered user # Thursday, May 8, 2008 11:59:46 AM
namdh # Friday, May 9, 2008 2:58:18 AM