G'day
I have got a grid that when row selected the contents of that row and of the child table write to a cached datatable then to hashtable then to XML all on button click..
the problem it was writing Flat XML where i need hierarchical XML
here is my code
<code>public partial class _Default : System.Web.UI.Page
{
private static DataSet dataSet;
protected void Button1_Click(object sender, EventArgs e)
{
DataTable dataTable = new DataTable("Projects");
DataColumn column;
column = new DataColumn();
column.DataType = Type.GetType("System.Int32");
column.ColumnName = "ProjectID";
column.ReadOnly = true;
column.Unique = true;
dataTable.Columns.Add("ProjectFileCode");
dataTable.Columns.Add("ProjectID");
dataTable.Columns.Add("Name_First");
dataTable.Columns.Add("Name_Last");
dataTable.Columns.Add("Mailing_Name");
dataTable.Columns.Add("Name_LegalTrading");
dataTable.Columns.Add("Postal_Address");
dataTable.Columns.Add("MailingLocation");
dataTable.Columns.Add("Agreement Number");
dataTable.Columns.Add("Commencement_Date");
dataTable.Columns.Add("Completion_Date_for_Onground_Works");
dataTable.Columns.Add("Agreement_Termination_Date");
dataTable.Columns.Add("Total_Project_Cost");
dataTable.Columns.Add("CMA_Contribution_$");
dataTable.Columns.Add("Property_Name");
dataTable.Columns.Add("Locality");
dataTable.Columns.Add("Legal_Land_Owner");
dataTable.Columns.Add("Total_Property_Size_Hectares");
dataTable.Columns.Add("LGA");
dataTable.Columns.Add("CMA_Sub-Region_Area");
dataTable.Columns.Add("Applicant_Contribution_$");
dataTable.Columns.Add("Incentive_Round_Number");
dataTable.Columns.Add("Project_Area");
dataTable.Columns.Add("Phone_Business");
dataTable.Columns.Add("Mobile_Business");
dataTable.Columns.Add("Email_Business");
dataTable.Columns.Add("Fax_Business");
dataTable.Columns.Add("Phone_Private");
DataColumn[] PrimaryKeyColumns = new DataColumn[1];
PrimaryKeyColumns[0] = dataTable.Columns["ProjectID"];
dataTable.PrimaryKey = PrimaryKeyColumns;
dataSet = new DataSet();
dataSet.Tables.Add(dataTable);
dataTable = new DataTable("Activities");
column = new DataColumn();
column.DataType = Type.GetType("System.Int32");
column.ColumnName = "ActivityID";
column.AutoIncrement = true;
column.Caption = "ID";
column.ReadOnly = false;
column.Unique = true;
dataTable.Columns.Add("ProjectID");
dataTable.Columns.Add("ActivityID");
dataTable.Columns.Add("ActivityType");
dataTable.Columns.Add("MeasureNumber");
dataTable.Columns.Add("Unit_Name");
dataTable.Columns.Add("Unit_Abbreviation");
DataColumn parentColumn = dataSet.Tables["Projects"].Columns["ProjectID"];
DataColumn childColumn = dataSet.Tables["Activities"].Columns["ProjectID"];
DataRelation relation = new DataRelation("parent2Child", parentColumn, childColumn);
dataSet.Tables["Activities"].ParentRelations.Add(relation);
dataTable = new DataTable();
foreach (GridDataItem gridDataItem in RadGrid1.SelectedItems)
{
Hashtable hashtable = new Hashtable();
gridDataItem.ExtractValues(hashtable);
DataRow dataRow = dataTable.NewRow();
foreach (DictionaryEntry entry in hashtable)
{
dataRow[entry.Key.ToString()] = entry.Value;
}
dataTable.Rows.Add(dataRow);
}
if (dataTable.Rows.Count > 0)
{
dataTable.WriteXml(Server.MapPath("~/Xml") + "\\Test_Water_Gully_Stabilsation.xml");
}
}
</code>