ARTICLE

Bind a Silverlight DataGrid to a given XML data source

Posted by Bechir Bejaoui Articles | Silverlight with C# December 10, 2008
In this article, I will illustrate how to bind a Silverlight DataGrid to a given XML data source
Reader Level:
Download Files:
 

Bind a given DataGrid data source to a given XML file

DataGrid could also be bound to a another persisted kind of datasoures, such as XML ressources or something spectial such as RSS feeds. To bind a given DataGrid to a given xml file data source, the following example is provided to illustrate that.

Create a new Silverlight application

datagrid1.gif

Figure 1

First, In the XAML code editor add the following code

       <Grid x:Name="LayoutRoot" Background="White">
            <data:DataGrid x:Name="myDataGrid"
                     AutoGenerateColumns="True"
                     >
            </data:DataGrid>
        </Grid>

As you can remark, the DataGrid should be named so that it could be refered later in the C# code behind. Now, let consider this xml file as a main data source for our DataGrid.

<?xml version="1.0" encoding="utf-8" ?>
<myFamily>
  <
item>
    <
FirstName>Bejaoui</FirstName>
    <LastName>Habib</LastName>
    <Age>66</Age>
    <IsMale>true</IsMale>
  </item>
  <
item>
    <
FirstName>Ben Garga</FirstName>
    <LastName>Kadija</LastName>
    <Age>63</Age>
    <IsMale>false</IsMale>
  </item>

  <item>
    <
FirstName>Bejaoui</FirstName>
    <LastName>Bechir</LastName>
    <Age>30</Age>
    <IsMale>true</IsMale>
  </item>
  <
item>
    <
FirstName>Bejaoui</FirstName>
    <LastName>Arbia</LastName>
    <Age>25</Age>
    <IsMale>false</IsMale>
  </item>
  <
item>
    <
FirstName>Bejaoui</FirstName>
    <LastName>Rim</LastName>
    <Age>20</Age>
    <IsMale>false</IsMale>
  </item>
</
myFamily>

Second, a class that fits the xml structure should be developed. It could be represented as under

  public class Person
        {
            public string FirstName { get; set; }
            public string LastName { get; set; }
            public string Age { get; set; }
            public string IsMale { get; set; }
        }

Third, a reference to the System.Xml.Linq namespace should be added

datagrid2.gif

Figure 2

In the code behind, a DataGrid object should be declared and the under code should be implemented

     public partial class Page : UserControl
        {
            DataGrid oGrid;
            public Page()
            {
                InitializeComponent();
                InitializeGrid();
            }
            public void InitializeGrid()
            {
                XDocument oDoc = XDocument.Load("File.xml");
                var myData = from info in oDoc.Descendants("item")
                             select new Person
                             {
                                 FirstName = Convert.ToString(info.Element("FirstName").Value),
                                 LastName = Convert.ToString(info.Element("LastName").Value),
                                 Age = Convert.ToString(info.Element("Age").Value),
                                 IsMale = Convert.ToString(info.Element("IsMale").Value)
                             };
                oGrid = this.FindName("myDataGrid") as DataGrid;
                oGrid.ItemsSource = myData;

            }
        }

This leads to the following result

datagrid3.gif

Figure 3

Login to add your contents and source code to this article
post comment
     

Great job

Posted by Muhammad Ovais Feb 07, 2012

Its a nice and useful article for those who wants to learn things in Silverlight.

Posted by Maria Johnson Jan 16, 2012

Thanks for sharing.

Posted by Maria Johnson Jan 16, 2012

Thanks

Posted by Jimmy Underwood Jan 16, 2012

Good article...

Posted by Vineet Kumar Saini Jan 16, 2012
COMMENT USING
PREMIUM SPONSORS
DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and add new content to existing PDF documents from within your applications.
Join a Chapter
SPONSORED BY
  • PDF reports have never been easier to create. With our included WYSIWYG Designer, you can layout your reports, set up your data source and let DynamicPDF ReportWriter do the rest.
Get Career Advice from Experts