Blog
Try now

Connecting Telerik Reports to XML Data with the ObjectDataSource

Tuesday, December 14, 2010 by Robert Shoemate | Comments 3

Often times, you’ll need to store data from your application in XML files. Well, what if you want to report on this data… it’s not in a database, so how do you do it? I’m happy to say that you can easily report on XML data through the use of the ObjectDataSource component provided with Telerik Reporting. In this blog entry, we’ll take a look at how this can be accomplished.

Working with XML Data

For this example, I’ve generated some XML data in advance using this helpful data generation website.

<Accounts
    <Account>
        <Name>Cody Whitfield</Name>
        <Email>ut.pharetra@adipiscingligulaAenean.ca</Email>
    </Account>
    <Account>
        <Name>Stewart Douglas</Name>
        <Email>Aliquam.vulputate.ullamcorper@etultrices.ca</Email>
    </Account>
    <Account>
        <Name>Cooper Deleon</Name>
        <Email>vitae@cubiliaCurae;.ca</Email>
    </Account>
</Accounts>


In order to make this data usable with Telerik Reporting, you’ll need to start by creating a typed DataSet. Doing so will allow you to easily load your XML data, and since it will be typed, Telerik Reporting will be able to pick up the available column names for use with the expression builder and data explorer.

Generating the DataSet is actually a pretty simple process. Visual Studio includes a tool for generating XML Schemas and their corresponding DataSets. In order to access this tool, you will need to start an instance of the Visual Studio Command Prompt. The shortcut to start this command prompt should be located under the Visual Studio folder in the Start menu. Once in the command prompt, you can generate an XSD and DataSet using the following command.

"xsd AccountData.xml /d"

This will automatically generate an XML Schema and DataSet that you can include in your reporting project. In order to actually access it from a Telerik Report, you’ll need to take an additional step and wrap it with a custom repository class containing data access methods. This is what you’ll bind the ObjectDataSource component to. The following code accomplishes this by providing a method that retrieves all available data.

public class AccountDataRepository
{
    public ReportLibrary.Accounts.AccountDataTable GetAccounts()
    {
        Accounts dataset = new Accounts();
         
        // TODO: Adjust this to point to the location of your XML data
        dataset.ReadXml("C:\\Source\\Data\\AccountData.xml");
 
        return dataset.Account;
    }
}


Creating the Report

Once you have a DataSet and a Repository class, creating the Telerik Report is the easy part. All you need to do is create a new report, and run through the report wizard.

In order to bind to the custom Repository class, you’ll need to use an ObjectDataSource component.

image

The Business Object you will point to will be the type of the repository class. In this case, our repository class is call AccountDataRepository.

image

You will also need to select a method of the repository class that returns data. For this example, the GetAccounts() method of our repository will return the necessary data from our XML file.

image

Once the ObjectDataSource has been created, Telerik Reporting will detect the available fields. Completing the report is simply a matter of running through the rest of the steps in the Report Wizard.

image

The completed report looks something like this...

image

Click here to download the source.

3  comments

  • Charlie 29 Dec 2010
    Have Reporting Q3 2010 SP1 been released?  I haven't seen any release information to confirm that it has been released.

    Thanks,

    Charlie J.
  • Robert Shoemate 03 Jan 2011
    Hey Charlie,



    Q3 2010 SP1 of Telerik Reporting was released on the 22nd of December. You should be able to download it from within your account. You can read the release notes here:

    http://www.telerik.com/versionnotes.aspx?id=2377
  • Ravinder 06 Jan 2011
    hey guys,

    i have  poblem  when i am trying to filtering the values from telerik reportviewer controls parameters in silverlight application by using objectdatasource ,when i use  IN clause to filtering the values from object data source   its giving error. so please any body help me ,
       

Add comment

  1. Formatting options
       
      
     
     
       
  2. (optional, emails won't be shown on public pages)
  3. (optional)