GridView XML Edit Delete Insert Update. In this example i'm explaining how to Edit Delete Insert and update XML file data in GridView using C# and VB.Net in Asp.Net.
I have created a XML file with three fields Firstname,LastName and Location.
XML file looks like mentioned below.
I have placed one gridview on aspx page and three textbox in editItemTemplate of gridview for editing, one button and three textbox in Footer Template for Inserting new records in XML file.
c# CODE
VB.NET
Build and run the application.
I have created a XML file with three fields Firstname,LastName and Location.
XML file looks like mentioned below.
Amit Jain Mumbai User 3 Noida User 4 Bangalore
I have placed one gridview on aspx page and three textbox in editItemTemplate of gridview for editing, one button and three textbox in Footer Template for Inserting new records in XML file.
HTML SOURCE OF PAGE
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False" ShowFooter="True"
onrowcancelingedit="GridView1_RowCancelingEdit"
onrowdeleting="GridView1_RowDeleting"
onrowediting="GridView1_RowEditing"
onrowupdating="GridView1_RowUpdating"
onrowcommand="GridView1_RowCommand">
<Columns>
<asp:CommandField ShowEditButton="true" />
<asp:CommandField ShowDeleteButton="true" />
<asp:TemplateField HeaderText="First Name">
<ItemTemplate>
<asp:Label ID="lblFname" runat="server" Text='<%#Eval("FirstName") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtFirstName" runat="server" Text='<%#Bind("FirstName")%>'/>
</EditItemTemplate>
<FooterTemplate>
<asp:Button ID="btn" runat="server" Text="Insert" CommandName="InsertXMLData"/>
<asp:TextBox ID="txtFirstNameInsert" runat="server"/>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Last Name">
<ItemTemplate>
<asp:Label ID="lblLname" runat="server" Text='<%#Eval("LastName") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtLastName" runat="server" Text='<%#Bind("LastName") %>'/>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtLastNameInsert" runat="server"/>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Location">
<ItemTemplate>
<asp:Label ID="lblLocation" runat="server" Text='<%#Eval("Location") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtLocation" runat="server" Text='<%#Bind("Location") %>'/>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtLocationInsert" runat="server"/>
</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
c# CODE
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) BindGridView(); } protected void BindGridView() { DataSet dsXML = new DataSet(); dsXML.ReadXml(Server.MapPath("~/App_Data/XMLFile.xml")); GridView1.DataSource = dsXML; GridView1.DataBind(); GridView1.ShowFooter = true; } protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { BindGridView(); DataSet dsGrid = (DataSet)GridView1.DataSource; dsGrid.Tables[0].Rows[GridView1.Rows[e.RowIndex].DataItemIndex].Delete(); dsGrid.WriteXml(Server.MapPath("~/App_Data/XMLFile.xml")); BindGridView(); } protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { GridView1.ShowFooter = false; GridView1.EditIndex = e.NewEditIndex; BindGridView(); } protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { int index = GridView1.Rows[e.RowIndex].DataItemIndex; string firstName = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtFirstName")).Text; string lastName = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtLastName")).Text; string location = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtLocation")).Text; GridView1.EditIndex = -1; BindGridView(); DataSet dsUpdate = (DataSet)GridView1.DataSource; dsUpdate.Tables[0].Rows[index]["FirstName"] = firstName; dsUpdate.Tables[0].Rows[index]["LastName"] = lastName; dsUpdate.Tables[0].Rows[index]["Location"] = location; dsUpdate.WriteXml(Server.MapPath("~/App_Data/XMLFile.xml")); BindGridView(); } protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GridView1.EditIndex = -1; BindGridView(); } protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { if(e.CommandName == "InsertXMLData") { string firstname = ((TextBox)GridView1.FooterRow.FindControl("txtFirstNameInsert")).Text; string lastname = ((TextBox)GridView1.FooterRow.FindControl("txtLastNameInsert")).Text; string location = ((TextBox)GridView1.FooterRow.FindControl("txtLocationInsert")).Text; BindGridView(); DataSet dsInsert = (DataSet)GridView1.DataSource; DataRow drInsert = dsInsert.Tables[0].NewRow(); drInsert["FirstName"] = firstname; drInsert["LastName"] = lastname; drInsert["Location"] = location; dsInsert.Tables[0].Rows.Add(drInsert); dsInsert.WriteXml(Server.MapPath("~/App_Data/XMLFile.xml")); BindGridView(); } }
VB.NET
Protected Sub Page_Load(sender As Object, e As EventArgs) If Not Page.IsPostBack Then BindGridView() End If End Sub Protected Sub BindGridView() Dim dsXML As New DataSet() dsXML.ReadXml(Server.MapPath("~/App_Data/XMLFile.xml")) GridView1.DataSource = dsXML GridView1.DataBind() GridView1.ShowFooter = True End Sub Protected Sub GridView1_RowDeleting(sender As Object, e As GridViewDeleteEventArgs) BindGridView() Dim dsGrid As DataSet = DirectCast(GridView1.DataSource, DataSet) dsGrid.Tables(0).Rows(GridView1.Rows(e.RowIndex).DataItemIndex).Delete() dsGrid.WriteXml(Server.MapPath("~/App_Data/XMLFile.xml")) BindGridView() End Sub Protected Sub GridView1_RowEditing(sender As Object, e As GridViewEditEventArgs) GridView1.ShowFooter = False GridView1.EditIndex = e.NewEditIndex BindGridView() End Sub Protected Sub GridView1_RowUpdating(sender As Object, e As GridViewUpdateEventArgs) Dim index As Integer = GridView1.Rows(e.RowIndex).DataItemIndex Dim firstName As String = DirectCast(GridView1.Rows(e.RowIndex).FindControl("txtFirstName"), TextBox).Text Dim lastName As String = DirectCast(GridView1.Rows(e.RowIndex).FindControl("txtLastName"), TextBox).Text Dim location As String = DirectCast(GridView1.Rows(e.RowIndex).FindControl("txtLocation"), TextBox).Text GridView1.EditIndex = -1 BindGridView() Dim dsUpdate As DataSet = DirectCast(GridView1.DataSource, DataSet) dsUpdate.Tables(0).Rows(index)("FirstName") = firstName dsUpdate.Tables(0).Rows(index)("LastName") = lastName dsUpdate.Tables(0).Rows(index)("Location") = location dsUpdate.WriteXml(Server.MapPath("~/App_Data/XMLFile.xml")) BindGridView() End Sub Protected Sub GridView1_RowCancelingEdit(sender As Object, e As GridViewCancelEditEventArgs) GridView1.EditIndex = -1 BindGridView() End Sub Protected Sub GridView1_RowCommand(sender As Object, e As GridViewCommandEventArgs) If e.CommandName = "InsertXMLData" Then Dim firstname As String = DirectCast(GridView1.FooterRow.FindControl("txtFirstNameInsert"), TextBox).Text Dim lastname As String = DirectCast(GridView1.FooterRow.FindControl("txtLastNameInsert"), TextBox).Text Dim location As String = DirectCast(GridView1.FooterRow.FindControl("txtLocationInsert"), TextBox).Text BindGridView() Dim dsInsert As DataSet = DirectCast(GridView1.DataSource, DataSet) Dim drInsert As DataRow = dsInsert.Tables(0).NewRow() drInsert("FirstName") = firstname drInsert("LastName") = lastname drInsert("Location") = location dsInsert.Tables(0).Rows.Add(drInsert) dsInsert.WriteXml(Server.MapPath("~/App_Data/XMLFile.xml")) BindGridView() End If End Sub
Build and run the application.