Saturday, April 5, 2014

Save To Xml temporarily and then save to database

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default5.aspx.cs" Inherits="Default5" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<h2>Save To Xml temporarily and then save to database</h2>
<div>
<table>
<tr>
<td style="width: 100px">
Name:</td>
<td style="width: 100px">
<asp:TextBox ID="txtName" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td style="width: 100px">
Location:</td>
<td style="width: 100px">
<asp:TextBox ID="txtLocation" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td style="width: 100px">
Email:</td>
<td style="width: 100px">
<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td style="width: 100px" valign="top">
Comments:</td>
<td style="width: 100px">
<asp:TextBox ID="txtComments" runat="server" TextMode="MultiLine" Height="104px"></asp:TextBox></td>
</tr>
<tr>
<td></td>
<td>
<asp:Button ID="btnSubmit" runat="server" OnClick="btnSubmit_Click" Text="Submit" /></td>
</tr>
</table>
<br />
<asp:DataList ID="dlComments" Runat="server" Width="100%" OnItemCommand="dlComments_ItemCommand">
<ItemTemplate>
<asp:Label ID="lblId" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Id") %>' Visible="false"></asp:Label>
Name:
<asp:Label ID="lblName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "name") %>'></asp:Label><br />
E-mail: 
<a href="mailto:<%# DataBinder.Eval(Container.DataItem, "email") %>"><%# DataBinder.Eval(Container.DataItem, "email") %></a>
<asp:Label ID="lblEmail" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "email") %>' Visible="false"></asp:Label>  <br />
Location: 
<asp:Label ID="lblLocation" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "location") %>'></asp:Label><br />
Date: 
<asp:Label ID="lblDate" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Date") %>'></asp:Label><br />
Description: 
<asp:Label ID="lblDescription" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Description") %>'></asp:Label>
<br />
<asp:Button ID="btnDelete" runat="server" Text="Delete" CommandName="Deletes" CommandArgument='<%#Eval("Id") %>'/>
</ItemTemplate>
</asp:DataList>
<br /><br /><br /><br /><br />
<asp:Button ID="btnSaveInDatabase" runat="server" Text="Save To database" OnClick="btnSaveInDatabase_Click"/>
</div>
</form>
</body>
</html>


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;
using System.Xml;
using System.Data;
public partial class Default5 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //Bind xml data to datalist
            BindDatalist();
        }
    }
    /// <summary>
    /// btnSubmit event is used to insert data into XML file
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        XmlDocument xmldoc = new XmlDocument();
        xmldoc.Load(Server.MapPath("Sample1.xml"));
        XmlElement parentelement = xmldoc.CreateElement("Comments");
        XmlElement Id = xmldoc.CreateElement("Id");
        Id.InnerText = Convert.ToString(Guid.NewGuid());
        XmlElement name = xmldoc.CreateElement("Name");
        name.InnerText = txtName.Text;
        XmlElement location = xmldoc.CreateElement("location");
        location.InnerText = txtLocation.Text;
        XmlElement email = xmldoc.CreateElement("Email");
        email.InnerText = txtEmail.Text;
        XmlElement Description = xmldoc.CreateElement("Description");
        Description.InnerText = txtComments.Text;
        XmlElement date = xmldoc.CreateElement("Date");
        date.InnerText = DateTime.Now.ToString();
        parentelement.AppendChild(Id);
        parentelement.AppendChild(name);
        parentelement.AppendChild(location);
        parentelement.AppendChild(email);
        parentelement.AppendChild(Description);
        parentelement.AppendChild(date);
        xmldoc.DocumentElement.AppendChild(parentelement);
        xmldoc.Save(Server.MapPath("Sample1.xml"));
        BindDatalist();
    }
    /// <summary>
    /// Bind xml data to datalist
    /// </summary>
    private void BindDatalist()
    {
        XmlTextReader xmlreader = new XmlTextReader(Server.MapPath("Sample1.xml"));
        DataSet ds = new DataSet();
        ds.ReadXml(xmlreader);
        xmlreader.Close();
        if (ds.Tables.Count != 0)
        {
            dlComments.DataSource = ds;
            dlComments.DataBind();
        }
        else
        {
            dlComments.DataSource = null;
            dlComments.DataBind();
        }
    }
    protected void dlComments_ItemCommand(object sender, CommandEventArgs e)
    {
        string ComamndName = e.CommandName;
        switch (ComamndName)
        {
            case "Deletes":
                Guid Id = new Guid(Convert.ToString(e.CommandArgument));
                //Add Delete Method here;
                deleteNode(Id);
                break;
        }
    }
    public void deleteNode(Guid Id)
    {
        XmlDocument xmldoc = new XmlDocument();
        xmldoc.Load(Server.MapPath("Sample1.xml"));
        foreach (XmlNode node in xmldoc.SelectNodes("CommentsInformation/Comments"))
        {
            if (node.SelectSingleNode("Id").InnerText == Id.ToString())
            {
                node.ParentNode.RemoveChild(node);
            }
        }
        xmldoc.Save(Server.MapPath("Sample1.xml"));
        BindDatalist();
    }
    protected void btnSaveInDatabase_Click(object sender, EventArgs e)
    {
        foreach (DataListItem item in dlComments.Items)
        {
            //We have already binded the values in the datalist in design page (Note:if u have not set - u can assign the values in OnItemDataBound event)
            Label lblId = (Label)item.FindControl("lblId");
            Label lblName = (Label)item.FindControl("lblName");
            Label lblEmail = (Label)item.FindControl("lblEmail");
            Label lblLocation = (Label)item.FindControl("lblLocation");
            Label lblDate = (Label)item.FindControl("lblDate");
            Label lblDescription = (Label)item.FindControl("lblDescription");
            string Id = lblId.Text;
            string Name = lblName.Text;
            string Email = lblEmail.Text;
            string Location = lblLocation.Text;
            string Date = lblDate.Text;
            string Description = lblDescription.Text;
            //write your save method here eg:
            //SaveToDb(Id, Name, Email, Location, Date, Description);
        }
    }
}


Sample1.xml
<?xml version="1.0" encoding="utf-8"?>
<CommentsInformation>
  <Comments>
    <Id>4fc979eb-c451-424d-960a-a2c99c834768</Id>
    <Name>Name1</Name>
    <location>NY</location>
    <Email>test@test.com</Email>
    <Description>test</Description>
    <Date>4/5/2014 7:47:50 PM</Date>
  </Comments>
  <Comments>
    <Id>5f3700d3-8247-47fb-ad27-7150922026c8</Id>
    <Name>Name2</Name>
    <location>India</location>
    <Email>test@test.com</Email>
    <Description>test</Description>
    <Date>4/5/2014 7:48:02 PM</Date>
  </Comments>
</CommentsInformation>


 



Gridview2

0 comments:

Post a Comment