Menu

Saturday, September 25, 2010

Insert Update Delete with XML

Create 2 Text Fields | TxtName, TxtEmail
3 Buttons | BtnAdd, BtnDelete, BtnEdit
1 Gridview | Gridview1
1 Label |  Label1

Right Click on Gridview select properties
In properties find columns
select CommandFields Add Select Field

Goto Solution Explorer 
Right click on App_Data folder and select add new item
Then select xml and name it users.xml

My Xml file :

<?xml version="1.0" encoding="utf-8"?>
<Information>
  <User>
    <Name>Faraz</Name>
    <Email>faraz_ali2008@live.com</Email>
  </User>
  <User>
    <Name>Sheraz</Name>
    <Email>sherazali95@live.com</Email>
  </User>
</Information>

Now in code file 

Add Namespace 
using System.Xml;

Display Data In GridView

private void loadXmlData()
    {
        DataSet dt = new DataSet();
        dt.ReadXml(Server.MapPath("~/App_Data/users.xml"));

        GridView1.DataSource = dt;
        GridView1.DataBind();
    }

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            loadXmlData();
        }
    }

Now Gridview Looks like

Insert Data In XML 

Now double click on Add Button

protected void BtnAdd_Click(object sender, EventArgs e)
    {
        try
        {
            XmlDocument xd = new XmlDocument();
            xd.Load(Server.MapPath("~/App_Data/users.xml"));

            XmlElement userE = xd.CreateElement("User");
            XmlElement nameE = xd.CreateElement("Name");
            XmlElement emailE = xd.CreateElement("Email");

            nameE.InnerText = TxtName.Text.Trim();
            emailE.InnerText = TxtEmail.Text.Trim();

            userE.AppendChild(nameE);
            userE.AppendChild(emailE);

            xd.DocumentElement.AppendChild(userE);

            xd.Save(Server.MapPath("~/App_Data/users.xml"));

            loadXmlData();
        }
        catch (Exception ex)
        {
            Label1.Text = "Error : " + ex.Message;
        }
    }


For Update Or Delete

First we have to select data from Gridview

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        //when user click on gridview select link it pass a seleted index to session
        selectIndex = GridView1.SelectedIndex;
        FindXMLData(selectIndex);
    }

internal int selectIndex
    {
        get
        {
            if (Session["Page_selectIndex"] == null)
            {
                return -1;
            }
            return Int32.Parse(Session["Page_selectIndex"].ToString());
        }
        set
        {
            Session["Page_selectIndex"] = value;
        }
    }

//this method retrieve selected data from xml and show in textfields

private void FindXMLData(int selectedIndex)
    {
        XmlDocument xd = new XmlDocument();
        xd.Load(Server.MapPath("~/App_Data/users.xml"));

        XmlNodeList XNL = xd.DocumentElement.ChildNodes;
        XmlNode XmlN = XNL.Item(selectedIndex);

        TxtName.Text = XmlN["Name"].InnerText;
        TxtEmail.Text = XmlN["Email"].InnerText;
    }

Delete Data 

protected void BtnDelete_Click(object sender, EventArgs e)
    {
        XmlDocument xd = new XmlDocument();
        xd.Load(Server.MapPath("~/App_Data/users.xml"));

        XmlNode XmlN = xd.DocumentElement.ChildNodes.Item(selectIndex);
        XmlN.ParentNode.RemoveChild(XmlN);

        xd.Save(Server.MapPath("~/App_Data/users.xml"));

        loadXmlData();

        TxtName.Text = "";
        TxtEmail.Text = "";
    }

Update/Edit Data

    protected void BtnEdit_Click(object sender, EventArgs e)
    {
        if (selectIndex == -1)
        {
            Label1.Text = "Update Error";
        }
        else
        {
            XmlDocument xd = new XmlDocument();
            xd.Load(Server.MapPath("~/App_Data/users.xml"));

            XmlNode xmlN = xd.DocumentElement.ChildNodes.Item(selectIndex);

            xmlN["Name"].InnerText = TxtName.Text.Trim();
            xmlN["Email"].InnerText = TxtEmail.Text.Trim();

            xd.Save(Server.MapPath("~/App_Data/users.xml"));

            loadXmlData();
        }
    }

Done.
Download Source Code

No comments:

Post a Comment