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.
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.
sir,can you please provide a video for a "grid view inside a grid view"..that will be very helpfull.thank you
ReplyDeleteHi 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
ReplyDeleteplease reply me soon with some information.
God bless you
Iam waiting for ur reply