==========================Employee.xml=========
<?xml version="1.0" encoding="utf-8"?>
<NewElement>
<Employee>
<ID>1</ID>
<Name>pramod s r</Name>
</Employee>
<Employee>
<ID>2</ID>
<Name>koli</Name>
</Employee>
<Employee>
<ID>3</ID>
<Name>xyz</Name>
</Employee>
<Employee>
<ID>4</ID>
<Name>sdfsdf</Name>
</Employee>
</NewElement>
==============================Design=============================
<asp:ListView ID="lvEmployee" runat="server" InsertItemPosition="LastItem" OnItemInserting="lvEmployee_ItemInserting"
OnItemDeleting="lvEmployee_ItemDeleting" OnItemEditing="lvEmployee_ItemEditing"
OnItemCanceling="lvEmployee_ItemCanceling" >
<LayoutTemplate>
<table id="Table1" runat="server">
<tr id="Tr1" runat="server">
<td id="Td1" runat="server">
<table id="itemPlaceholderContainer" runat="server" border="0" style="">
<tr id="Tr2" runat="server" style="">
<th id="Th1" runat="server">
</th>
<th id="Th2" runat="server">
ID
</th>
<th id="Th3" runat="server">
Name
</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="lblID" runat="server" Text='<%# Bind("ID") %>' />
</td>
<td>
<asp:Label ID="lblName" runat="server" Text='<%# Bind("Name") %>' />
</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>
</td>
<td>
<asp:TextBox ID="txtID" runat="server" Text='<%# Bind("ID") %>' />
</td>
<td>
<asp:TextBox ID="txtName" runat="server" Text='<%# Bind("Name") %>' />
</td>
<td>
<asp:Button ID="btnUpdate" runat="server" Text="Update" OnClick="btnUpdate_Click" />
</td>
</tr>
</InsertItemTemplate>
</asp:ListView>
==================================Code======================
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Xml;
public partial class Listview_XML : System.Web.UI.Page
{
//Global varaiable declaration
string xmlfile = @"E:\Employee.xml";
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
LoadData();
}
}
//Loading the data from xml file
protected void LoadData()
{
DataSet ds = new DataSet();
DataTable table = new DataTable();
//reading xml file and loading listview.
ds.ReadXml(xmlfile);
lvEmployee.DataSource = ds;
//binding dataset to listview.
lvEmployee.DataBind();
}
// onclick of insert button in listview
protected void lvEmployee_ItemInserting(object sender, ListViewInsertEventArgs e)
{
TextBox txtidTextBox = (TextBox)lvEmployee.InsertItem.FindControl("txtID");
TextBox txtnameTextBox = (TextBox)lvEmployee.InsertItem.FindControl("txtName");
// loading xml file
XmlDocument xdoc = new XmlDocument();
xdoc.Load(xmlfile);
//Creating childnode to root node using Xmlelement
XmlElement xelement = xdoc.CreateElement("Employee");
//creating subnode to childnode using XmlElement
XmlElement xID = xdoc.CreateElement("ID");
xID.InnerText = txtidTextBox.Text;
xelement.AppendChild(xID);
//creating subnode to childnode using XmlElement
XmlElement xName = xdoc.CreateElement("Name");
xName.InnerText = txtnameTextBox.Text;
xelement.AppendChild(xName);
//Adding childnode to the root node.(in my case "NewElement is root node")
xdoc.DocumentElement.AppendChild(xelement);
xdoc.Save(xmlfile);
LoadData();
}
// onclick of edit button in listview
static Int16 i = 0;// based on the requirement we can change the declaration of variable i.
protected void lvEmployee_ItemEditing(object sender, ListViewEditEventArgs e)
{
//getting the index value of particular row on click of edit button
lvEmployee.EditIndex = e.NewEditIndex;
i = Convert.ToInt16(lvEmployee.EditIndex);
// to get the values from label which is inside listview, we need FindControl
Label lblid = (Label)lvEmployee.EditItem.FindControl("lblID");
Label lblname = (Label)lvEmployee.EditItem.FindControl("lblName");
// to get the values from textbox which is inside listview, we need FindControl
TextBox txtidTextBox = (TextBox)lvEmployee.InsertItem.FindControl("txtID");
TextBox txtnameTextBox = (TextBox)lvEmployee.InsertItem.FindControl("txtName");
txtidTextBox.Text = lblid.Text;
txtidTextBox.Visible = false;
txtnameTextBox.Text = lblname.Text;
}
protected void lvEmployee_ItemDeleting(object sender, ListViewDeleteEventArgs e)
{
// to get the values from label which is inside listview, we need FindControl
Label lbl = (lvEmployee.Items[e.ItemIndex].FindControl("lblID")) as Label;
Label lblName = (lvEmployee.Items[e.ItemIndex].FindControl("lblName")) as Label;
//loading xml file using Xmldocument.
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlfile);
XmlNodeList newXMLNodes = xmlDoc.SelectNodes("/NewElement/Employee");
// here i am searching based on id and name.So i am concatenating data into one string variable.
string value = lbl.Text + lblName.Text;
// code to remove child node from xml based on selection(matches all the data in xml file)
//when a match is found removes that childnode from root node.
foreach (XmlNode newXMLNode in newXMLNodes)
{
if (newXMLNode.InnerText == value)
{
newXMLNode.ParentNode.RemoveChild(newXMLNode);
}
}
//saving back xml file and reloading listview.
xmlDoc.Save(xmlfile);
xmlDoc = null;
LoadData();
}
protected void lvEmployee_ItemCanceling(object sender, ListViewCancelEventArgs e)
{
// to clear the textbox data.. (reset)
TextBox txtidTextBox = (TextBox)lvEmployee.InsertItem.FindControl("txtID");
TextBox txtnameTextBox = (TextBox)lvEmployee.InsertItem.FindControl("txtName");
txtidTextBox.Text = string.Empty;
txtnameTextBox.Text = string.Empty;
}
protected void btnUpdate_Click(object sender, EventArgs e)
{
try
{
// to get the values from label which is inside listview, we need FindControl
Label lblid = (Label)lvEmployee.EditItem.FindControl("lblID");
Label lblname = (Label)lvEmployee.EditItem.FindControl("lblName");
// to get the values from textbox which is inside listview, we need FindControl
TextBox txtidTextBox = (TextBox)lvEmployee.InsertItem.FindControl("txtID");
TextBox txtnameTextBox = (TextBox)lvEmployee.InsertItem.FindControl("txtName");
//loading xml file
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(xmlfile);
// Index value will be obtained at lvEmployee_ItemEditing ,that index value
//is used here for update.
XmlNode xmlnode = xmldoc.DocumentElement.ChildNodes.Item(i);
xmlnode["ID"].InnerText = lblid.Text;
xmlnode["Name"].InnerText = txtnameTextBox.Text;
// save xml file and reload listview.
xmldoc.Save(xmlfile);
LoadData();
}
catch
{
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<NewElement>
<Employee>
<ID>1</ID>
<Name>pramod s r</Name>
</Employee>
<Employee>
<ID>2</ID>
<Name>koli</Name>
</Employee>
<Employee>
<ID>3</ID>
<Name>xyz</Name>
</Employee>
<Employee>
<ID>4</ID>
<Name>sdfsdf</Name>
</Employee>
</NewElement>
==============================Design=============================
<asp:ListView ID="lvEmployee" runat="server" InsertItemPosition="LastItem" OnItemInserting="lvEmployee_ItemInserting"
OnItemDeleting="lvEmployee_ItemDeleting" OnItemEditing="lvEmployee_ItemEditing"
OnItemCanceling="lvEmployee_ItemCanceling" >
<LayoutTemplate>
<table id="Table1" runat="server">
<tr id="Tr1" runat="server">
<td id="Td1" runat="server">
<table id="itemPlaceholderContainer" runat="server" border="0" style="">
<tr id="Tr2" runat="server" style="">
<th id="Th1" runat="server">
</th>
<th id="Th2" runat="server">
ID
</th>
<th id="Th3" runat="server">
Name
</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="lblID" runat="server" Text='<%# Bind("ID") %>' />
</td>
<td>
<asp:Label ID="lblName" runat="server" Text='<%# Bind("Name") %>' />
</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>
</td>
<td>
<asp:TextBox ID="txtID" runat="server" Text='<%# Bind("ID") %>' />
</td>
<td>
<asp:TextBox ID="txtName" runat="server" Text='<%# Bind("Name") %>' />
</td>
<td>
<asp:Button ID="btnUpdate" runat="server" Text="Update" OnClick="btnUpdate_Click" />
</td>
</tr>
</InsertItemTemplate>
</asp:ListView>
==================================Code======================
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Xml;
public partial class Listview_XML : System.Web.UI.Page
{
//Global varaiable declaration
string xmlfile = @"E:\Employee.xml";
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
LoadData();
}
}
//Loading the data from xml file
protected void LoadData()
{
DataSet ds = new DataSet();
DataTable table = new DataTable();
//reading xml file and loading listview.
ds.ReadXml(xmlfile);
lvEmployee.DataSource = ds;
//binding dataset to listview.
lvEmployee.DataBind();
}
// onclick of insert button in listview
protected void lvEmployee_ItemInserting(object sender, ListViewInsertEventArgs e)
{
TextBox txtidTextBox = (TextBox)lvEmployee.InsertItem.FindControl("txtID");
TextBox txtnameTextBox = (TextBox)lvEmployee.InsertItem.FindControl("txtName");
// loading xml file
XmlDocument xdoc = new XmlDocument();
xdoc.Load(xmlfile);
//Creating childnode to root node using Xmlelement
XmlElement xelement = xdoc.CreateElement("Employee");
//creating subnode to childnode using XmlElement
XmlElement xID = xdoc.CreateElement("ID");
xID.InnerText = txtidTextBox.Text;
xelement.AppendChild(xID);
//creating subnode to childnode using XmlElement
XmlElement xName = xdoc.CreateElement("Name");
xName.InnerText = txtnameTextBox.Text;
xelement.AppendChild(xName);
//Adding childnode to the root node.(in my case "NewElement is root node")
xdoc.DocumentElement.AppendChild(xelement);
xdoc.Save(xmlfile);
LoadData();
}
// onclick of edit button in listview
static Int16 i = 0;// based on the requirement we can change the declaration of variable i.
protected void lvEmployee_ItemEditing(object sender, ListViewEditEventArgs e)
{
//getting the index value of particular row on click of edit button
lvEmployee.EditIndex = e.NewEditIndex;
i = Convert.ToInt16(lvEmployee.EditIndex);
// to get the values from label which is inside listview, we need FindControl
Label lblid = (Label)lvEmployee.EditItem.FindControl("lblID");
Label lblname = (Label)lvEmployee.EditItem.FindControl("lblName");
// to get the values from textbox which is inside listview, we need FindControl
TextBox txtidTextBox = (TextBox)lvEmployee.InsertItem.FindControl("txtID");
TextBox txtnameTextBox = (TextBox)lvEmployee.InsertItem.FindControl("txtName");
txtidTextBox.Text = lblid.Text;
txtidTextBox.Visible = false;
txtnameTextBox.Text = lblname.Text;
}
protected void lvEmployee_ItemDeleting(object sender, ListViewDeleteEventArgs e)
{
// to get the values from label which is inside listview, we need FindControl
Label lbl = (lvEmployee.Items[e.ItemIndex].FindControl("lblID")) as Label;
Label lblName = (lvEmployee.Items[e.ItemIndex].FindControl("lblName")) as Label;
//loading xml file using Xmldocument.
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlfile);
XmlNodeList newXMLNodes = xmlDoc.SelectNodes("/NewElement/Employee");
// here i am searching based on id and name.So i am concatenating data into one string variable.
string value = lbl.Text + lblName.Text;
// code to remove child node from xml based on selection(matches all the data in xml file)
//when a match is found removes that childnode from root node.
foreach (XmlNode newXMLNode in newXMLNodes)
{
if (newXMLNode.InnerText == value)
{
newXMLNode.ParentNode.RemoveChild(newXMLNode);
}
}
//saving back xml file and reloading listview.
xmlDoc.Save(xmlfile);
xmlDoc = null;
LoadData();
}
protected void lvEmployee_ItemCanceling(object sender, ListViewCancelEventArgs e)
{
// to clear the textbox data.. (reset)
TextBox txtidTextBox = (TextBox)lvEmployee.InsertItem.FindControl("txtID");
TextBox txtnameTextBox = (TextBox)lvEmployee.InsertItem.FindControl("txtName");
txtidTextBox.Text = string.Empty;
txtnameTextBox.Text = string.Empty;
}
protected void btnUpdate_Click(object sender, EventArgs e)
{
try
{
// to get the values from label which is inside listview, we need FindControl
Label lblid = (Label)lvEmployee.EditItem.FindControl("lblID");
Label lblname = (Label)lvEmployee.EditItem.FindControl("lblName");
// to get the values from textbox which is inside listview, we need FindControl
TextBox txtidTextBox = (TextBox)lvEmployee.InsertItem.FindControl("txtID");
TextBox txtnameTextBox = (TextBox)lvEmployee.InsertItem.FindControl("txtName");
//loading xml file
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(xmlfile);
// Index value will be obtained at lvEmployee_ItemEditing ,that index value
//is used here for update.
XmlNode xmlnode = xmldoc.DocumentElement.ChildNodes.Item(i);
xmlnode["ID"].InnerText = lblid.Text;
xmlnode["Name"].InnerText = txtnameTextBox.Text;
// save xml file and reload listview.
xmldoc.Save(xmlfile);
LoadData();
}
catch
{
}
}
}
No comments:
Post a Comment