Support us .Net Basics C# SQL ASP.NET ADO.NET MVC Slides C# Programs Subscribe Buy DVD

XMLDataSource in asp.net - Part 4

Suggested Videos 
Part 1 - Datagrid in asp.net
Part 2 - Data source controls in asp.net
Part 3 - Object datasource in asp.net

We discussed about ObjectDataSource in Part 3 of the asp.net gridview tutorial. Please watch Part 3, before proceeding with this video.



If you want to display xml data in a gridview control, without writing a single line of code, xmldatasource control can be used. Let's understand using XmlDataSource control with an example. Create an asp.net web application. Add a folder with name=Data to the project. Right click on the "Data" folder and add an XML file with name=Countries.xml.



Copy and paste the following XML in Countries1.xml
<?xml version="1.0" encoding="utf-8" ?>
<Countries>
  <Country>
    <Id>101</Id>
    <Name>India</Name>
    <Continent>Asia</Continent>
  </Country>
  <Country>
    <Id>102</Id>
    <Name>China</Name>
    <Continent>Asia</Continent>
  </Country>
  <Country>
    <Id>103</Id>
    <Name>Frnace</Name>
    <Continent>Europe</Continent>
  </Country>
  <Country>
    <Id>104</Id>
    <Name>United Kingdom</Name>
    <Continent>Europe</Continent>
  </Country>
  <Country>
    <Id>105</Id>
    <Name>United State of America</Name>
    <Continent>North America</Continent>
  </Country>
</Countries>

Drag "XmlDataSource" control from the toolbox, onto WebForm1.aspx. Click on the smart tag button of the "XmlDataSource" control, and then click on "Configure Data Source". Click on "Browse" button and select "Countries.xml" from "Data" folder. Finally click OK.

Now, drag and drop a gridview control on WebForm1.aspx. Click on smart tag button on the gridview control, and select "XmlDataSource1" from "Choose Data Source" dropdownlist. At this point, GridView control reports an error stating "The data source for GridView with id 'GridView1' did not have any properties or attributes from which to generate columns.  Ensure that your data source has content.". This is because, XmlDataSource control works with attributes, not child xml entities. 

I can think of 3 ways to solve this issue
1. Rewrite Countries.xml file, using attributes instead of xml nodes. We will discuss this in this video session.
2. Use an XSLT transformation file, to convert xml nodes to attributes.
3. Load Countries.xml data into a dataset and then bind to the gridview control

We will discuss about options 2 and 3 in our next video.

Now, copy and paste the following xml in "Countries.xml". Notice that, we have rewritten, the xml using attributes.
<Countries>
  <Country Id="101" Name="India" Continent="Asia"/>
  <Country Id="102" Name="China" Continent="Asia"/>
  <Country Id="103" Name="Frnace" Continent="Europe"/>
  <Country Id="104" Name="United Kingdom" Continent="Europe"/>
  <Country Id="105" Name="United State of America" Continent="North America"/>
</Countries>

Delete the gridview control, that is already on WebForm1.aspx. Drag and drop the gridview control again, and configure data source. Notice that, the gridview control displays xml data as expected. 

2 comments:

  1. sir,can you please provide a video for a "grid view inside a grid view"..that will be very helpfull.thank you

    ReplyDelete
  2. Hi Venkat i need ur help iam the fresher and recently joined comapny my task is to make the application to run in a different language like English,Arabic.....etc
    please reply me soon with some information.
    God bless you
    Iam waiting for ur reply

    ReplyDelete

If you like this website, please share with your friends on facebook and Google+ and recommend us on google using the g+1 button on the top right hand corner.