Working with ADO.NET Datasets and .NET Objects using Crystal Reports and ASP.NET 2.0 - .NET objects as data sources to Crystal Reports: adding and binding a crystal report
(Page 6 of 6 )
Once the classes are complete, add a new crystal report to the web site (Sample01.rpt) and select the "Order" class available under ".NET Objects" (Fig 07).
Add it as selected table and click next, add all fields and finally click finish. Report Designer opens with all the fields and you can format the report according to your requirements.
Add a new web form (Sample01.aspx) and drag a button and CrystalReportViewer control onto the web form. In the code behind, copy the following code:
Imports System.Data
Imports System.Data.SqlClient
Imports CrystalDecisions.Shared
Imports CrystalDecisions.CrystalReports.Engine
Partial Class Sample01
Inherits System.Web.UI.Page
Public Shared Function getList() As Orders
Dim dt As New DataTable
Dim ad As New SqlDataAdapter("SELECT TOP 200 OrderID, OrderDate, CustomerID, EmployeeID FROM orders", "Data Source=.sqlexpress;initial catalog=Northwind;user id=sa; password=eXpress2005")
ad.Fill(dt)
Dim colOrd As New Orders
For Each dr As DataRow In dt.Rows
colOrd.add(New Order(dr("OrderID"), dr("OrderDate"), dr("CustomerID"), dr("EmployeeID")))
Next
Return colOrd
End Function
Protected Sub CrystalReportViewer1_Navigate(ByVal source As Object, ByVal e As CrystalDecisions.Web.NavigateEventArgs) Handles CrystalReportViewer1.Navigate
Dim rep As New ReportDocument
rep.Load(Server.MapPath("Sample01.rpt"))
rep.SetDataSource(getList())
Me.CrystalReportViewer1.ReportSource = rep
Me.CrystalReportViewer1.DataBind()
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
CrystalReportViewer1_Navigate(Nothing, Nothing)
End Sub
End Class
Finally, execute the application and hit the button to view the report.
Of all of the above code, the following is the most important part to understand:
Dim colOrd As New Orders
For Each dr As DataRow In dt.Rows
colOrd.add(New Order(dr("OrderID"), dr("OrderDate"), dr("CustomerID"), dr("EmployeeID")))
Next
Once the DataAdapter gives the datatable, I am converting the datatable to "Orders" collection by creating an "Order" object for each row available. Once the collection is populated, we assign the same as the data source to the Crystal Report.
I hope you enjoyed the article and any suggestions, bugs, errors, enhancements etc. are highly appreciated at http://jagchat.spaces.live.com
| DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware. |