Introduction: This article explains how to use a XML file to store and retrieve data
dynamically using ASP.NET with C#. This article will also help to create
child nodes in a XML file using ASP.NET.
Use the following
procedure to create a simple application (BookStore) for storing data to and
retrieving data from a XML file.
Step 1: Create an ASP.NET project add one web web form
and add the following controls:
Control Id
|
Control
|
Purpose
|
tbTitle |
TextBox
Control |
To enter
the title of the book. |
tbAuthor |
TextBox
Control |
To enter
the Author Name of the book. |
tbYear |
TextBox
Control |
To enter
the publishing year of the book. |
tbPrice |
TextBox
Control |
To enter
the price of the book. |
btnSubmit |
Button
Control |
To Submit
the data. |
gvBookStoreRecords |
GridView
Control |
To display
data of XML File |
I have designed my aspx page like as in the following:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.auto-style1 {
text-align: right;
width: 75px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<br />
<table style="width: 100%;">
<tr>
<td class="auto-style1">Title:</td>
<td>
<asp:TextBox ID="tbTitle" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td class="auto-style1">Author:</td>
<td>
<asp:TextBox ID="tbAuthor" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td class="auto-style1">Year:</td>
<td>
<asp:TextBox ID="tbYear" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td class="auto-style1">Price:</td>
<td>
<asp:TextBox ID="tbPrice" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td class="auto-style1"> </td>
<td>
<asp:Button ID="btnSubmit" runat="server" Text="Submit" />
</td>
</tr>
</table>
<asp:GridView ID="gvBookStoreRecords" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<EditRowStyle BackColor="#999999" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#E9E7E2" />
<SortedAscendingHeaderStyle BackColor="#506C8C" />
<SortedDescendingCellStyle BackColor="#FFFDF8" />
<SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>
</div>
</form>
</body>
</html>And as in the code above I designed the page as in the following:
Step 2: Add
an XML file within the project solution, provide it the
name BookStore.xml. Create a root node in it as in the following:
<?xmlversion="1.0"encoding="utf-8"?>
<bookstore>
</bookstore>
Step 3: On
the click event of the btnSubmit (Button that we have placed at
aspx page) write the following code:
protected void btnSubmit_Click(object sender, EventArgs e)
{
{
// creating object of XML DOCument class
XmlDocument XmlDocObj = new XmlDocument();
//loading XML File in memory
XmlDocObj.Load(Server.MapPath("BookStore.xml"));
//Select root node which is already defined
XmlNode RootNode = XmlDocObj.SelectSingleNode("bookstore");
//Creating one child node with tag name book
XmlNode bookNode = RootNode.AppendChild(XmlDocObj.CreateNode(XmlNodeType.Element, "book", ""));
//adding node title to book node and inside it data taking from tbTitle TextBox
bookNode.AppendChild(XmlDocObj.CreateNode(XmlNodeType.Element, "Title", "")).InnerText = tbTitle.Text;
//adding node Author to book node and inside it data taking from tbAuthor TextBox
bookNode.AppendChild(XmlDocObj.CreateNode(XmlNodeType.Element, "Author", "")).InnerText = tbAuthor.Text;
//adding node Year to book node and inside it data taking from tbYear TextBox
bookNode.AppendChild(XmlDocObj.CreateNode(XmlNodeType.Element, "Year", "")).InnerText = tbYear.Text;
//adding node tbPrice to book node and inside it data taking from tbPrice TextBox
bookNode.AppendChild(XmlDocObj.CreateNode(XmlNodeType.Element, "Price", "")).InnerText = tbPrice.Text;
//after adding node, saving BookStore.xml back to the server
XmlDocObj.Save(Server.MapPath("BookStore.xml"));
//Calling grid view binding method.
gridDataBind();
}
Step 4: Create a gridDataBind Method to retrieve the data
from the XML file:
public void gridDataBind()
{
DataSet ds = new DataSet();
//reading data from the BookStore.xml...
ds.ReadXml(Server.MapPath("BookStore.xml"));
//Adding dataset ds as a datasource of the grid view...
gvBookStoreRecords.DataSource = ds;
//binding data with grid view...
gvBookStoreRecords.DataBind();
}
Step 5: Now run the project
and you will see the following outputs:
- When the project loads the first time then:
After adding some data:
No comments:
Post a Comment