XML  

CRUD Operation Using ListView With XML Database


This article describes how to use CRUD (Create, Read, Update, Delete) Operation using ListView using XML database in ASP.NET.

First of all add a new XML file using add new item...here is a XML file I took from an article in www.c-sharpcorner.com.

MovieDB.xml

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Movies
  <
Movie>
    <
Name>Scanner Darklya</Name>
    <Year>2009</Year>
    <Genre>Drama, Crime, Animation</Genre>
    <Cast>Keanu Reeves</Cast>
  </Movie>
  <
Movie>
    <
Name>Afro Samurai: Resurrection</Name>
    <Year>2009</Year>
    <Genre>Animation, Action</Genre>
    <Cast>No Cast</Cast>
  </Movie>
  <
Movie>
    <
Name>Batman: Gotham Knight</Name>
    <Year>2009</Year>
    <Genre>Animation, Action</Genre>
    <Cast>Batman</Cast>
  </Movie>
  <
Movie>
    <
Name>Bedazzled</Name>
    <Year>2009</Year>
    <Genre>Thriller, Comedy</Genre>
    <Cast>Brendan Fraser, Elizabeth Hurley</Cast>
  </Movie>
  <
Movie>
    <
Name>Bedtime Stories</Name>
    <Year>2009</Year>
    <Genre>Drama, Comedy</Genre>
    <Cast>Adam Sanders, Courtney Cox</Cast>
  </Movie>
</Movies>

Now create a new asp.net application and drag and drop a ListView control from toolbox.

<asp:ListView ID="MoviesListView" runat="server"
        InsertItemPosition="LastItem" OnItemInserting="MoviesListView_ItemInserting"
        OnItemDeleting="MoviesListView_ItemDeleting" OnItemEditing="MoviesListView_ItemEditing"
        OnItemCanceling="MoviesListView_ItemCanceling" >
        <LayoutTemplate>
        <table id="Table1" runat="server" width=100%>
            <tr id="Tr1" runat="server">
            <td id="Td1" runat="server">
            <table id="itemPlaceholderContainer" runat="server" border="0" style="" width=100%>
            <tr id="Tr2" runat="server" style="">
            <th id="Th1" runat="server"></th>
            <th id="Th2" runat="server">Name</th>
            <th id="Th3" runat="server">Year</th>
            <th id="Th4" runat="server">Genre</th>
            <th id="Th5" runat="server">Cast</th>
            </tr>
            <tr id="itemPlaceholder" runat="server"></tr></table></td></tr>
            <tr id="Tr3" runat="server">
            <td id="Td2" runat="server" style=""></td>
            </tr>
            </table>
            </LayoutTemplate>
        <ItemTemplate>
        <tr style="">
        <td>
        <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="Delete" />
        <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" />
        </td>
        <td><asp:Label ID="lblName" runat="server" Text='<%# Bind("Name") %>' /></td>
        <td><asp:Label ID="lblYear" runat="server" Text='<%# Bind("Year") %>' /></td>
        <td><asp:Label ID="lblGenre" runat="server" Text='<%# Bind("Genre") %>' /></td>
        <td><asp:Label ID="lblCast" runat="server" Text='<%# Bind("Cast") %>' /></td>
        </tr>
        </ItemTemplate>
        <InsertItemTemplate>
        <tr style="">
        <td>
        <asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="Insert" />
        <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Clear" />
        </td>       
        <td><asp:TextBox ID="txtName" runat="server" Text='<%# Bind("Name") %>' /></td>
        <td><asp:TextBox ID="txtYear" runat="server" Text='<%# Bind("Year") %>' /></td>
        <td><asp:TextBox ID="txtGenre" runat="server" Text='<%# Bind("Genre") %>' /></td>
        <td><asp:TextBox ID="txtCast" runat="server" Text='<%# Bind("Cast") %>' /></td>
        <td><asp:Button ID="btnUpdate" runat="server" Text="Update" OnClick="btnUpdate_Click" /></td>
        </tr>
        </InsertItemTemplate>
        </asp:ListView>   

Code

using System.Data;
using System.Xml;

string xmlfile = @"C:\Documents and Settings\rsaxena.MCNSOLUTIONS\My Documents\Visual Studio 2008\WebSites\ListViewCRUDWithXMl\MovieDB.xml";

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

protected void LoadData()
    {
        DataSet ds = new DataSet();
        DataTable table = new DataTable();
       
        ds.ReadXml(xmlfile);
        MoviesListView.DataSource = ds;
   
        MoviesListView.DataBind();
    }

protected void MoviesListView_ItemInserting(object sender, ListViewInsertEventArgs e)
    {
        TextBox txtNameTextBox = (TextBox)MoviesListView.InsertItem.FindControl("txtName");
        TextBox txtYearTextBox = (TextBox)MoviesListView.InsertItem.FindControl("txtYear");
        TextBox txtGenreTextBox = (TextBox)MoviesListView.InsertItem.FindControl("txtGenre");
        TextBox txtCastTextBox = (TextBox)MoviesListView.InsertItem.FindControl("txtCast");
       
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(xmlfile);
       XmlElement xelement = xmlDoc.CreateElement("Movie");

         XmlElement xName = xmlDoc.CreateElement("Name");
        xName.InnerText = txtNameTextBox.Text;
        xelement.AppendChild(xName);
       
        XmlElement xYear = xmlDoc.CreateElement("Year");
        xYear.InnerText = txtYearTextBox.Text;
        xelement.AppendChild(xYear);
        XmlElement xGenre = xmlDoc.CreateElement("Genre");
        xGenre.InnerText = txtGenreTextBox.Text;
        xelement.AppendChild(xGenre);
 
        XmlElement xCast = xmlDoc.CreateElement("Cast");
        xCast.InnerText = txtCastTextBox.Text;
        xelement.AppendChild(xCast);
       
        xmlDoc.DocumentElement.AppendChild(xelement);
        xmlDoc.Save(xmlfile);
        LoadData();
    }

static Int16 i = 0;

protected void MoviesListView_ItemEditing(object sender, ListViewEditEventArgs e)
    {
       
        MoviesListView.EditIndex = e.NewEditIndex;
        i = Convert.ToInt16(MoviesListView.EditIndex);
       
        Label lblName = (Label)MoviesListView.EditItem.FindControl("lblName");
        Label lblYear = (Label)MoviesListView.EditItem.FindControl("lblYear");
        Label lblGenre = (Label)MoviesListView.EditItem.FindControl("lblGenre");
        Label lblCast = (Label)MoviesListView.EditItem.FindControl("lblCast");
       
        TextBox txtnameTextBox = (TextBox)MoviesListView.InsertItem.FindControl("txtName");
        TextBox txtYearTextBox = (TextBox)MoviesListView.InsertItem.FindControl("txtYear");
        TextBox txtGenreTextBox = (TextBox)MoviesListView.InsertItem.FindControl("txtGenre");
        TextBox txtCastTextBox = (TextBox)MoviesListView.InsertItem.FindControl("txtCast");
        txtnameTextBox.Text = lblName.Text;
        txtYearTextBox.Text = lblYear.Text;
        txtGenreTextBox.Text = lblGenre.Text;
        txtCastTextBox.Text = lblCast.Text;
    }

protected void MoviesListView_ItemDeleting(object sender, ListViewDeleteEventArgs e)
    {       
        Label lblName = (MoviesListView.Items[e.ItemIndex].FindControl("lblName")) as Label;
        Label lblYear = (MoviesListView.Items[e.ItemIndex].FindControl("lblYear")) as Label;
        Label lblGenre = (MoviesListView.Items[e.ItemIndex].FindControl("lblGenre")) as Label;
        Label lblCast = (MoviesListView.Items[e.ItemIndex].FindControl("lblCast")) as Label;
       
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(xmlfile);
        XmlNodeList newXMLNodes = xmlDoc.SelectNodes("/Movies/Movie");
       
        string value = lblName.Text;
       
        foreach (XmlNode newXMLNode in newXMLNodes)
        {
            if (newXMLNode.InnerText == value)
            {
                newXMLNode.ParentNode.RemoveChild(newXMLNode);
            }
        }       
        xmlDoc.Save(xmlfile);
        xmlDoc = null;
        LoadData();
    }

protected void MoviesListView_ItemCanceling(object sender, ListViewCancelEventArgs e)
{       
        TextBox txtNameTextBox = (TextBox)MoviesListView.InsertItem.FindControl("txtName");
        TextBox txtYearTextBox = (TextBox)MoviesListView.InsertItem.FindControl("txtYear");
        TextBox txtGenreTextBox = (TextBox)MoviesListView.InsertItem.FindControl("txtGenre");
        TextBox txtCastTextBox = (TextBox)MoviesListView.InsertItem.FindControl("txtCast");
        txtNameTextBox.Text = string.Empty;
        txtYearTextBox.Text = string.Empty;
        txtGenreTextBox.Text = string.Empty;
        txtCastTextBox.Text = string.Empty;
}

protected void btnUpdate_Click(object sender, EventArgs e)
    {  
       
        TextBox txtNameTextBox = (TextBox)MoviesListView.InsertItem.FindControl("txtName");
        TextBox txtYearTextBox = (TextBox)MoviesListView.InsertItem.FindControl("txtYear");
        TextBox txtGenreTextBox = (TextBox)MoviesListView.InsertItem.FindControl("txtGenre");
        TextBox txtCastTextBox = (TextBox)MoviesListView.InsertItem.FindControl("txtCast");
       
        XmlDocument xmldoc = new XmlDocument();
        xmldoc.Load(xmlfile);       
       
        XmlNode xmlnode = xmldoc.DocumentElement.ChildNodes.Item(i);
        xmlnode["Name"].InnerText = txtNameTextBox.Text;
        xmlnode["Year"].InnerText = txtYearTextBox.Text;
        xmlnode["Genre"].InnerText = txtGenreTextBox.Text;
        xmlnode["Cast"].InnerText = txtCastTextBox.Text;
       
        xmldoc.Save(xmlfile);
        LoadData();
    }

Now it's time to run the application and see the result.
1.JPG

Image1.

2.JPG


Image2


3.JPG

Image3.

4.JPG

Image4.