Here's a good way to do it...
First... You need to create an XML schema file along with your xml file.
Here's an example:
Original XML File (example):
<?xml version="1.0" encoding="utf-8" ?>
<Projects xmlns="projects.xsd">
<Project>
<ID>1</ID>
<Name>Project 01</Name>
<File>Test.txt</File>
<Integer_A>1</Integer_A>
<Integer_B>2</Integer_B>
<Status>Open</Status>
<Description></Description>
<Note></Note>
</Project>
</Projects>
Here's the XSD file (XML Schema):
<?xml version="1.0" ?>
<xs:schema id="Projects" targetNamespace="projects.xsd"
xmlns:mstns="projects.xsd" xmlns="projects.xsd"
xmlns:xs="
http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
attributeFormDefault="qualified"
elementFormDefault="qualified">
<xs:element name="Projects" msdata:IsDataSet="true"
msdata:EnforceConstraints="False">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="Project">
<xs:complexType>
<xs:sequence>
<xs:element name="S-ID" type="xs:integer"
minOccurs="0" />
<xs:element name="Name" type="xs:string" minOccurs="0" />
<xs:element name="File" type="xs:string" minOccurs="0" />
<xs:element name="Integer_A" type="xs:integer"
minOccurs="0" />
<xs:element name="Integer_B" type="xs:integer"
minOccurs="0" />
<xs:element name="Status" type="xs:string" minOccurs="0" />
<xs:element name="Description" minOccurs="0"/>
<xs:element name="Note" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
Now when you use this XML file and schema in your datagrid... include
the schema in your dataset along with the xml file. Do it somewhat like
this...
//... c#
DataSet ds = new
DataSet(); ds.ReadXmlSchema(Server.MapPath("projects.xsd")); ds.ReadXml
(Server.MapPath("projects.xml"),XmlReadMode.InferSchema);
DataView dv = new DataView(ds.Tables[0]);
//...
DG.DataSource = dv;
DG.DataBind();
//...