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