How to add event for checkbox in Asp.net Gridview Column

I have a gridview in asp where I added the first column as a checkbox column. Now I want to select this column and get the row id values. But I do not understand how to do this.

This is my Aspx code.

<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound" AutoGenerateColumns="False" BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black" GridLines="None"> <AlternatingRowStyle BackColor="PaleGoldenrod" /> <Columns> <asp:TemplateField> <HeaderTemplate> <asp:CheckBox ID="chkhdr" runat="server" /> </HeaderTemplate> <ItemTemplate> <asp:CheckBox ID="chkChild" runat="server" /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Username"> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Eval("col0") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Role(Admin)"> <ItemTemplate> <asp:CheckBox ID="chkAdmin" runat="server" Checked='<%# Eval("col1") %>' /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Role(User)"> <ItemTemplate> <asp:CheckBox ID="chkUser" runat="server" Checked='<%# Eval("col2") %>' /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Role(GeneralUser)"> <ItemTemplate> <asp:CheckBox ID="chkgen" runat="server" Checked='<%# Eval("col3") %>' /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> 

And here is my code behind the file ...

 protected void BindGridviewData() { var role = from MembershipUser u in Membership.GetAllUsers() select new { User = u.UserName, Role = string.Join(",", Roles.GetRolesForUser(u.UserName)) }; DataTable dTable = new DataTable(); dTable.Columns.Add("col0", typeof(string)); dTable.Columns.Add("col1", typeof(bool)); dTable.Columns.Add("col2", typeof(bool)); dTable.Columns.Add("col3", typeof(bool)); foreach (MembershipUser u in Membership.GetAllUsers()) { DataRow dRow = dTable.NewRow(); dRow[0] = u.UserName; string[] roles = Roles.GetRolesForUser(u.UserName); dRow[1] = roles.Contains("Admin") ? true : false; dRow[2] = roles.Contains("DPAO User") ? true : false; dRow[3] = roles.Contains("GeneralUser") ? true : false; dTable.Rows.Add(dRow); } GridView1.DataSource = dTable; GridView1.DataBind(); } 

Please guys help me since I have no idea how to do this ... Thanks in advance ...

+4
source share
5 answers

If you want to delete the entry using the button , try it:

Add a button outside the gridview for Delete:

 <asp:Button ID="cmdDelete" runat="server" onclick="cmdDelete_Click" Text="Delete" /> 

Code behind:

 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindGridviewData(); } } protected void BindGridviewData() { DataTable dTable = new DataTable(); dTable.Columns.Add("col0", typeof(string)); dTable.Columns.Add("col1", typeof(bool)); dTable.Columns.Add("col2", typeof(bool)); dTable.Columns.Add("col3", typeof(bool)); foreach (MembershipUser u in Membership.GetAllUsers()) { DataRow dRow = dTable.NewRow(); dRow[0] = u.UserName; string[] roles = Roles.GetRolesForUser(u.UserName); dRow[1] = roles.Contains("Admin") ? true : false; dRow[2] = roles.Contains("DPAO User") ? true : false; dRow[3] = roles.Contains("GeneralUser") ? true : false; dTable.Rows.Add(dRow); } GridView1.DataSource = dTable; GridView1.DataBind(); } protected void cmdDelete_Click(object sender, EventArgs e) { foreach (GridViewRow row in GridView1.Rows) { CheckBox chk = (CheckBox)row.FindControl("chkChild"); if (chk.Checked) { Label username = (Label)row.FindControl("Label1"); Membership.DeleteUser(username.Text); BindGridviewData(); } } } 
+1
source

try it,

 <asp:TemplateField HeaderText="View"> <ItemTemplate> <asp:CheckBox ID="chkview" runat="server" AutoPostBack="true" OnCheckedChanged="chkview_CheckedChanged" /> </ItemTemplate> </asp:TemplateField> 

add checkbox change event on aspx.cs page

 protected void chkview_CheckedChanged(object sender, EventArgs e) { GridViewRow row = ((GridViewRow)((CheckBox)sender).NamingContainer); int index = row.RowIndex; CheckBox cb1 = (CheckBox)Gridview.Rows[index].FindControl("chkview"); string yourvalue = cb1.Text; //here you can find your control and get value(Id). } 
+6
source

You can iterate over the collection of rows in the grid and check if it is selected.

Add the selected row (or get the identifier in your case) and perform further processing.

Below is a URL to get you started:

http://www.aspsnippets.com/Articles/GridView-with-CheckBox-Get-Selected-Rows-in-ASPNet.aspx

0
source

Use the OnCheckedChanged Event

 <ItemTemplate> <asp:CheckBox ID="chkgen" runat="server" Checked='<%# Eval("col3") %>' OnCheckedChanged="chkgen_OnCheckedChanged"/> </ItemTemplate> 

CS:

 protected void chkgen_OnCheckedChanged(object sender, EventArgs e) { int selRowIndex = ((GridViewRow)(((CheckBox)sender).Parent.Parent)).RowIndex; CheckBox cb = (CheckBox)gridView.Rows[selRowIndex].FindControl("chkgen"); if (cb.Checked) { //Perform your logic } } 
0
source
  protected void GetFillDropdown() { string consString = ConfigurationManager.ConnectionStrings["SheetalAcademy"].ConnectionString; SqlConnection conn = new SqlConnection(consString); int EID = Convert.ToInt32(Session["EmailID"].ToString()); SqlCommand cmd = new SqlCommand("Select id,Course_Name from tbl_Courses where EID='" + EID + "' and Active='True'", conn); conn.Open(); ddCourseType.Items.Clear(); ddCourseType.Items.Add("All"); ddCourseType.AppendDataBoundItems = true; ddCourseType.DataSource = cmd.ExecuteReader(); ddCourseType.DataTextField = "Course_Name"; ddCourseType.DataValueField = "id"; ddCourseType.DataBind(); conn.Close(); } 
0
source

All Articles