Enable/Disable CheckBox Inside the GridView Control


In this article you will see how to enable or disable a checkbox in GridView records based on the condition.

RowDataBound Event

A GridviewRowEventArgs object is passed to the event-handling method, that enables you to access the properties of the row being bound. To access a specific cell in the row, use the "cell" property of the GridViewRow object contained in the Row property of the GridEventRowEventArgs object.

Now let's have a look at this web application to see how to use the RowDataBound Event.

Step 1 :

Open Visual Studio then select "File" -> "New" -> "Website..." as in the following figure:


Step 2 :

Now go to the Solution Explorer and add a new item as in the following figure:


Step 3 :

Now add a new web form on your web application as in the following figure:


Step 4 :

Write the following code in the "default.aspx" page:

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


<!DOCTYPE html>


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


<title>Enable/Disable Checkbox in Gridview based on condtion in ASP.Net</title>



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


<asp:GridView ID="gvDetails" AutoGenerateColumns="False" CellPadding="3" runat="server"

OnRowDataBound="gvDetails_RowDataBound" BackColor="White" 

BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" ForeColor="Black" GridLines="Vertical">

    <AlternatingRowStyle BackColor="#CCCCCC" />




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



<asp:BoundField HeaderText="UserId" DataField="UserId" />

<asp:BoundField HeaderText="UserName" DataField="UserName" />

<asp:BoundField HeaderText="Education" DataField="Education" />

<asp:BoundField HeaderText="Location" DataField="Location" />


    <FooterStyle BackColor="#CCCCCC" />

<HeaderStyle BackColor="Black" Font-Bold="true" ForeColor="White" />

    <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />

    <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />

    <SortedAscendingCellStyle BackColor="#F1F1F1" />

    <SortedAscendingHeaderStyle BackColor="#808080" />

    <SortedDescendingCellStyle BackColor="#CAC9C9" />

    <SortedDescendingHeaderStyle BackColor="#383838" />







Add the connectionstring in web.config file such like :


 <add name="dbconnection" connectionString="Data Source=; Initial Catalog=Employee; 

User=abc; Password=***" providerName="SqlClient"/>



Step 5 :

Now write the following code in the "default.aspx.cs" page:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Data;

using System.Web.UI.WebControls;


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


    protected void Page_Load(object sender, EventArgs e)


        if (!IsPostBack)





    protected void BindData()


        DataTable dt = new DataTable();





        DataRow dtr = dt.NewRow();

        dtr["UserId"] = 1;

        dtr["UserName"] = "Pankaj Lohani";

        dtr["Education"] = "MCA";

        dtr["Location"] = "New Delhi";


        dtr = dt.NewRow();

        dtr["UserId"] = 2;

        dtr["UserName"] = "Nimit Joshi";

        dtr["Education"] = "MCA";

        dtr["Location"] = "Ghaziabad";


        dtr = dt.NewRow();

        dtr["UserId"] = 3;

        dtr["UserName"] = "Amit Senwal";

        dtr["Education"] = "BCA";

        dtr["Location"] = "Greater Noida";


        dtr = dt.NewRow();

        dtr["UserId"] = 4;

        dtr["UserName"] = "Pravesh Khanduri";

        dtr["Education"] = "BCA";

        dtr["Location"] = "Delhi";


        dtr = dt.NewRow();

        dtr["UserId"] = 5;

        dtr["UserName"] = "Ravi Kumar";

        dtr["Education"] = "BCA";

        dtr["Location"] = "Delhi";


        dtr = dt.NewRow();

        dtr["UserId"] = 6;

        dtr["UserName"] = "Ainul Hasan";

        dtr["Education"] = "MCA";

        dtr["Location"] = "Gurgaon";


        gvDetails.DataSource = dt;



    protected void gvDetails_RowDataBound(object sender, GridViewRowEventArgs e)


        if (e.Row.RowType == DataControlRowType.DataRow)


            CheckBox chkbox = (CheckBox)e.Row.FindControl("chkSelect");

            if (e.Row.Cells[3].Text == "BCA")


                chkbox.Enabled = false;




                chkbox.Enabled = true;






In the code above you saw that before the GridView control can be rendered, each row in the control must be bound to a record. The "RowDataBound" event is raised when a data row is bound to data in the GridView control. This enables you to provide an event-handling method that performs a modification of the values bound to the row, when the event occurs.

Step 6 :

Now debug the application by pressing F5; the output will then appear in the browser as in the following figure:


Step 7 :

Now you can check only the enable checkbox as in the following figure:



ASP.NET automatically remembers whether the Checkboxes were and were not checked across postbacks. We can also programmatically access the checkbox in code to determine whether a given checkbox is checked, or to change the checked state.