Edit multiple records in a Grid view

In this blog we will know how to edit multiple records in a grid view.

 

 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Editable_GridView_multiple_records._Default" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

    <title>Untitled Page</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

    <asp:GridView ID="GridView1" runat="server"

                             AllowPaging="True"

                             DataSourceID="SqlDataSource1"

                             AutoGenerateColumns="false">

<Columns>

 

     <asp:TemplateField HeaderText="Select">

 

   

    <ItemTemplate>

    <asp:CheckBox ID="chkSelect" runat="server"

                  AutoPostBack="true"

             OnCheckedChanged="chkSelect_CheckedChanged"/>

    </ItemTemplate>

   

    </asp:TemplateField>

    <asp:BoundField DataField="ID" HeaderText="ID"

                                   SortExpression="ID"/>

                                  

    <asp:TemplateField HeaderText="Name"

                       SortExpression="Name">

    <ItemTemplate>

    <asp:TextBox ID="txtName" runat="server"

                 Text='<%# Bind("Name") %>' ReadOnly="true"

                 ForeColor="Blue" BorderStyle="none"

                 BorderWidth="0px" >

    </asp:TextBox>

    </ItemTemplate>

    </asp:TemplateField>

   

    <asp:TemplateField HeaderText="Location"

                       SortExpression="Location">

    <ItemTemplate>

    <asp:TextBox ID="txtLocation" runat="server"

                 Text='<%# Bind("Location") %>'

                 ReadOnly="true" ForeColor="Blue"

                 BorderStyle="none" BorderWidth="0px">

    </asp:TextBox>

    </ItemTemplate>

    </asp:TemplateField>

</Columns>

</asp:GridView>

 

<asp:SqlDataSource ID="SqlDataSource1" runat="server"

ConnectionString="<%$ ConnectionStrings:ConnectionString %>"

SelectCommand="SELECT [ID], [Name], [Location] FROM [Details]"

DeleteCommand="DELETE FROM Details WHERE (ID = @ID)"

UpdateCommand="UPDATE [Details] SET [Name] = @Name,

              [Location] = @Location WHERE [ID] = @ID">

        <DeleteParameters>

             <asp:Parameter Name="ID" />

        </DeleteParameters>

        <UpdateParameters>

                <asp:Parameter Name="Name" />

                <asp:Parameter Name="Location" />

                <asp:Parameter Name="ID" />

        </UpdateParameters>

        </asp:SqlDataSource><br />

       

<asp:Button ID="btnUpdate" runat="server"

            OnClick="btnUpdate_Click" Text="Update" /><br />

           

 

    </div>

    <asp:Button ID="Button1" runat="server" onclick="Button1_Click"

        Text="Check all" />

    <asp:Button ID="Button2" runat="server" onclick="Button2_Click"

        Text="UnCheck all" />

    </form>

</body>

 

</html>

 

 

 

using System;

using System.Collections;

using System.Configuration;

using System.Data;

using System.Linq;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq;

using System.Data.SqlClient;

using System.Text;

namespace Editable_GridView_multiple_records

{

    public partial class _Default : System.Web.UI.Page

    {

        string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

 

        protected void btnUpdate_Click(object sender, EventArgs e)

        {

            StringBuilder strSql = new StringBuilder(string.Empty);

 

            SqlConnection con = new SqlConnection(connStr);

            SqlCommand cmd = new SqlCommand();

 

            for (int i = 0; i < GridView1.Rows.Count; i++)

            {

                CheckBox chkUpdate = (CheckBox)

                   GridView1.Rows[i].Cells[0].FindControl("chkSelect");

                if (chkUpdate != null)

                {

                    if (chkUpdate.Checked)

                    {

 

                        string strID = GridView1.Rows[i].Cells[1].Text;

                        string strName = ((TextBox)

                            GridView1.Rows[i].FindControl("txtName")).Text;

 

                        string strLocation = ((TextBox)

                            GridView1.Rows[i].FindControl("txtLocation")).Text;

 

                        string strUpdate =

                            "Update Details set Name = '" + strName + "',Location = '" + strLocation + "' WHERE ID ='" + strID + "'";

 

                        strSql.Append(strUpdate);

                    }

                }

            }

            try

            {

                cmd.CommandType = CommandType.Text;

                cmd.CommandText = strSql.ToString();

                cmd.Connection = con;

                con.Open();

                cmd.ExecuteNonQuery();

            }

            catch (SqlException ex)

            {

                string errorMsg = "Error in Updation";

                errorMsg += ex.Message;

                throw new Exception(errorMsg);

            }

            finally

            {

                con.Close();

            }

            UncheckAll();

        }

        private void UncheckAll()

        {

            foreach (GridViewRow row in GridView1.Rows)

            {

                CheckBox chkUncheck = (CheckBox)

                             row.FindControl("chkSelect");

                TextBox txtname = (TextBox)

                               row.FindControl("txtName");

                TextBox txtlocation = (TextBox)

                           row.FindControl("txtLocation");

                chkUncheck.Checked = false;

                txtname.ReadOnly = true;

                txtlocation.ReadOnly = true;

                txtname.ForeColor = System.Drawing.Color.Blue;

                txtlocation.ForeColor = System.Drawing.Color.Blue;

            }

        }

        protected void chkSelect_CheckedChanged

                            (object sender, EventArgs e)

        {

            CheckBox chkTest = (CheckBox)sender;

            GridViewRow grdRow = (GridViewRow)chkTest.NamingContainer;

            TextBox txtname = (TextBox)grdRow.FindControl

                                                ("txtName");

            TextBox txtlocation = (TextBox)grdRow.FindControl

                                              ("txtLocation");

            if (chkTest.Checked)

            {

                txtname.ReadOnly = false;

                txtlocation.ReadOnly = false;

                txtname.ForeColor = System.Drawing.Color.Black;

                txtlocation.ForeColor = System.Drawing.Color.Black;

            }

            else

            {

                txtname.ReadOnly = true;

                txtlocation.ReadOnly = true;

                txtname.ForeColor = System.Drawing.Color.Blue;

                txtlocation.ForeColor = System.Drawing.Color.Blue;

            }

        }

 

        protected void Button1_Click(object sender, EventArgs e)

        {

            CheckState(true);

        }

 

        protected void Button2_Click(object sender, EventArgs e)

        {

            CheckState(false);

        }

        private void CheckState(bool p)

        {

 

            foreach (GridViewRow row in GridView1.Rows)

            {

                CheckBox chkcheck = (CheckBox)row.FindControl("chkSelect");

 

                chkcheck.Checked = p;

 

            }

 

        }

    }

}

 

 

Thanks for reading