GridView Checkbox Column


GridView Checkbox Column



I used to have a class in 1.1 for the Datagrid that inherited from the DataGridColumn class. This allowed me to create a check box column with a client-side un/check-all box in the header. Then as I designed my grid I would just add my custom column.

I am currently on a project where I need similar functionality for the grid view, however, there does not seem to be a way to inherit or add functionality to a column.

So my question is, Is there a way to override a column? or Does this code already exist, in a reusable way?

Needs are simple: I would like for it to just register the JavaScript on the page and render a column of check boxes.

I have come across the 4guys sample already, but they have just put all the code into the code behind, I am looking for something a little less copy/paste.




ASP.net Page Loading popup

1:



ContentType doesnt work, mime=application/octet-stream
I derived classes from System.Web.UI.WebControls.BoundField and .HyperLinkField You might be interested in inheriting from CheckBoxField class http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.checkboxfield.aspx.
Html To Doc(Word) Or RTF Format


Showing/Hiding div CollapsePanel after ClientScript.RegisterClientScriptBlock


ASP.net Page object null when invoking it from within templated control

2:



Exposing .NET WebService to Other Platform (Java)
Could you just use a TemplateColumn with an ItemTemplate containing your CheckBox in your DataGrid Columns?.
Web Service For Database/Website Status
Something like:.
Validator not passing ErrorMessage to ValidationSummary
<asp:DataGrid id="DG1" runat = "server" DataKeyField = "ID"> <Columns> <asp:TemplateColumn HeaderText="ProductName"> <ItemTemplate> <asp:CheckBox id="chkBox1" runat="server"  Text =<%# DataBinder.Eval(Container.DataItem,"yourDataToBind") %> checked='<%# DataBinder.Eval(Container.DataItem,"yourBoolToBind")  %>'> </asp:CheckBox> </ItemTemplate> </asp:TemplateColumn> </Columns> </asp:DataGrid> 


3:


I inherited the BoundField and came up with this:. Page Code:.
<%@ register tagprefix="CAC" namespace="UI.Controls" assembly="UI.Controls" %>     <asp:gridview id="grdPrint" runat="server" autogeneratecolumns="False">     <columns>         <cac:checkallcolumn />         <asp:boundfield datafield="CompanyName" headertext="Company Name" />     </columns> </asp:gridview> 
And this is the control:.
Imports system.Web.UI Imports system.Web.UI.WebControls  Public Class CheckAllColumn     Inherits BoundField      Public Sub New()         MyBase.New()     End Sub      Public ReadOnly Property SelectedIndexes() As List(Of Int32)         Get             Dim selectedIndexList As New List(Of Int32)             Dim grdParent As GridView = CType(Me.Control, GridView)             For Each item As GridViewRow In grdParent.Rows                 Dim chkBox As CheckBox = CType(item.FindControl("checkboxCol"), CheckBox)                 If ((Not (chkBox) Is Nothing) _                             AndAlso chkBox.Checked) Then                     selectedIndexList.Add(item.DataItemIndex)                 End If             Next             Return selectedIndexList         End Get     End Property      Public ReadOnly Property SelectedDataKeys() As Object()         Get             Dim dataKeyList As ArrayList = New ArrayList             Dim grdParent As GridView = CType(Me.Control, GridView)             If (grdParent.DataKeys.Count > 0) Then                 For Each selectedIndex As Int32 In SelectedIndexes                     Dim DataKey As Object = grdParent.DataKeys(selectedIndex).ToString                     dataKeyList.Add(DataKey)                 Next             End If             Return CType(dataKeyList.ToArray(GetType(System.Object)), Object())         End Get     End Property      Public Overrides Sub InitializeCell(ByVal cell As DataControlFieldCell, ByVal cellType As DataControlCellType, ByVal rowState As DataControlRowState, ByVal rowIndex As Integer)         If cell Is Nothing Then             Throw New ArgumentNullException("cell", "cell is null.")         End If         MyBase.InitializeCell(cell, cellType, rowState, rowIndex)         If (cellType = DataControlCellType.Header) OrElse (cellType = DataControlCellType.DataCell) Then             Dim checkbox As CheckBox = New CheckBox             If cellType = DataControlCellType.Header Then                 checkbox.ID = "checkboxHead"             Else                 checkbox.ID = "checkboxCol"             End If             cell.Controls.Add(checkbox)         End If     End Sub      Public Shared Sub RegisterClientCheckEvents(ByVal pg As Page, ByVal formID As String)         If pg Is Nothing Then             Throw New ArgumentNullException("pg", "pg is null.")         End If         If formID Is Nothing OrElse formID.Length = 0 Then             Throw New ArgumentException("formID is null or empty.", "formID")         End If         Dim strCol As String = GetCheckColScript()         Dim strHead As String = GetCheckHeadScript()         If Not pg.ClientScript.IsClientScriptBlockRegistered("clientScriptCheckAll") Then             pg.ClientScript.RegisterClientScriptBlock(pg.GetType, "clientScriptCheckAll", strHead.Replace("[frmID]", formID))         End If         If Not pg.ClientScript.IsClientScriptBlockRegistered("clientScriptCheckChanged") Then             pg.ClientScript.RegisterClientScriptBlock(pg.GetType, "clientScriptCheckChanged", strCol.Replace("[frmID]", formID))         End If         RegisterAttributes(pg)     End Sub      Private Shared Sub RegisterAttributes(ByVal ctrl As Control)         For Each wc As Control In ctrl.Controls             If wc.HasControls Then                 RegisterAttributes(wc)             End If             If TypeOf (wc) Is CheckBox Then                 Dim chk As CheckBox = DirectCast(wc, CheckBox)                 If Not chk Is Nothing AndAlso chk.ID = "checkboxCol" Then                     chk.Attributes.Add("onclick", "CheckChanged()")                 ElseIf Not chk Is Nothing AndAlso chk.ID = "checkboxHead" Then                     chk.Attributes.Add("onclick", "CheckAll(this)")                 End If             End If         Next     End Sub      Private Shared Function GetCheckColScript() As String         Dim strScript As String         strScript = " <script language=JavaScript>"         strScript &= " function CheckAll( checkAllBox )"         strScript &= " {"         strScript &= " var frm = document.[frmID];"         strScript &= "  var ChkState=checkAllBox.checked;"         strScript &= "  for(i=0;i< frm.length;i++)"         strScript &= "  {"         strScript &= "         e=frm.elements[i];"         strScript &= "        if(e.type=='checkbox' && e.name.indexOf('checkboxCol') != -1)"         strScript &= "            e.checked= ChkState ;"         strScript &= "  }"         strScript &= " }"         strScript &= "  </script>"         Return strScript     End Function      Private Shared Function GetCheckHeadScript() As String         Dim strScript As String         strScript = "<script language=JavaScript>"         strScript &= "function CheckChanged()"         strScript &= "{"         strScript &= "  var frm = document.[frmID];"         strScript &= "  var boolAllChecked;"         strScript &= "  boolAllChecked=true;"         strScript &= "  for(i=0;i< frm.length;i++)"         strScript &= "  {"         strScript &= "    e=frm.elements[i];"         strScript &= "  if ( e.type=='checkbox' && e.name.indexOf('checkboxCol') != -1 )"         strScript &= "      if(e.checked== false)"         strScript &= "      {"         strScript &= "         boolAllChecked=false;"         strScript &= "         break;"         strScript &= "      }"         strScript &= "  }"         strScript &= "  for(i=0;i< frm.length;i++)"         strScript &= "  {"         strScript &= "    e=frm.elements[i];"         strScript &= "    if ( e.type=='checkbox' && e.name.indexOf('checkboxHead') != -1 )"         strScript &= "    {"         strScript &= "      if( boolAllChecked==false)"         strScript &= "         e.checked= false ;"         strScript &= "      else"         strScript &= "         e.checked= true;"         strScript &= "      break;"         strScript &= "    }"         strScript &= "   }"         strScript &= " }"         strScript &= " </script>"         Return strScript     End Function End Class 



85 out of 100 based on 55 user ratings 1105 reviews