When i use this code
using System;
using System.Collections;
using System.Data;
using Telerik.WebControls;

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 = "ActivityID";
        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");

        if (dataSet.Tables.Count > 0)
        {
            DataColumn parentColumn = dataSet.Tables["Projects"].Columns["ProjectID"];
            DataColumn childColumn = dataSet.Tables["Activities"].Columns["ProjectID"];
            DataRelation relation = new DataRelation("Projects2Activities", 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 (dataSet.Tables.Count > 0)
        {
            if (dataTable.Rows.Count > 0)
            {
                dataTable.WriteXml(Server.MapPath("~/Xml") + "\\Test_Water_Gully_Stabilsation.xml");
            }
        }
    }



}



when i run it i get this error

Server Error in '/Test_agreement' Application.

Object reference not set to an instance of an object.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error:

Line 72:         {
Line 73: DataColumn parentColumn = dataSet.Tables["Projects"].Columns["ProjectID"];
Line 74: DataColumn childColumn = dataSet.Tables["Activities"].Columns["ProjectID"];
Line 75: DataRelation relation = new DataRelation("Projects2Activities", parentColumn, childColumn);
Line 76: dataSet.Tables["Activities"].ParentRelations.Add(relation);

Source File: d:\Development Library\C# Samples\Test\Test_agreement\Test2.aspx.cs    Line: 74

Stack Trace:

[NullReferenceException: Object reference not set to an instance of an object.]
_Default.Button1_Click(Object sender, EventArgs e) in d:\Development Library\C# Samples\Test\Test_agreement\Test2.aspx.cs:74
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102


Version Information: Microsoft .NET Framework Version:2.0.50727.42; ASP.NET Version:2.0.50727.42