function SelectAllOrDeselect(CheckBox, Type, Column, HCheckBox) { try { var TotalChkBx = parseInt('<%= grd_EmpSelection.Rows.Count %>'); var TargetBaseControl = document.getElementById('<%= grd_EmpSelection.ClientID%>'); var TargetChildControl = null; if (Column == "1") TargetChildControl = "chkTestSelect"; else TargetChildControl = "chkTrainingSelect"; var Inputs = TargetBaseControl.getElementsByTagName("input"); var SelectCount = 0; //Checked/Unchecked all the checkBoxes in side the GridView. if (Type == "1") { for (var iCount = 0; iCount < Inputs.length; ++iCount) { if (Inputs[iCount].type == 'checkbox' && Inputs[iCount].id.indexOf(TargetChildControl, 0) >= 0) Inputs[iCount].checked = CheckBox.checked; } //Reset Counter SelectCount = CheckBox.checked ? TotalChkBx : 0; } else if (Type == "2") { //Reset Counter for (var iCount = 0; iCount < Inputs.length; ++iCount) { if (Inputs[iCount].type == 'checkbox' && Inputs[iCount].id.indexOf(TargetChildControl, 0) >= 0) if (Inputs[iCount].checked == true) SelectCount++; } //Modifiy Counter; if (!CheckBox.checked && SelectCount > 0) SelectCount--; //Change state of the header CheckBox. if (SelectCount < TotalChkBx) HCheckBox.checked = false; else if (SelectCount == TotalChkBx) HCheckBox.checked = true; } } catch (err) {} }
protected void grd_EmpSelection_RowCreated(object sender, GridViewRowEventArgs e) { //e.Row.RowState == DataControlRowState.Edit not works on Alternating Rows //if ((e.Row.RowState & DataControlRowState.Edit) > 0) if (e.Row.RowType == DataControlRowType.DataRow && (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)) { CheckBox chkTestSelectAll = (CheckBox)this.grd_EmpSelection.HeaderRow.FindControl("chkTestSelectAll"); CheckBox chkTestSelect = (CheckBox)e.Row.Cells[1].FindControl("chkTestSelect"); chkTestSelectAll.Attributes["onclick"] = string.Format("javascript:SelectAllOrDeselect(this,'1','1', {0});", chkTestSelectAll.ClientID); chkTestSelect.Attributes["onclick"] = string.Format("javascript:SelectAllOrDeselect(this,'2','1', {0});", chkTestSelectAll.ClientID); CheckBox chkTrainingSelectAll = (CheckBox)this.grd_EmpSelection.HeaderRow.FindControl("chkTrainingSelectAll"); CheckBox chkTrainingSelect = (CheckBox)e.Row.Cells[1].FindControl("chkTrainingSelect"); chkTrainingSelectAll.Attributes["onclick"] = string.Format("javascript:SelectAllOrDeselect(this,'1','2', {0});", chkTrainingSelectAll.ClientID); chkTrainingSelect.Attributes["onclick"] = string.Format("javascript:SelectAllOrDeselect(this,'2','2', {0});", chkTrainingSelectAll.ClientID); } }
The gridview checkbox will maintain the checked state during postback.
Reference
http://www.codeproject.com/KB/webforms/SelectingAllCheckBoxes.aspx
No comments:
Post a Comment