We help IT Professionals succeed at work.

Nested gridview select All

ddl_ex5
ddl_ex5 asked
on
774 Views
Last Modified: 2012-06-27
I have a gridview within a gridview.

I want to be able once selecting the inner gridview to select all the items via a checkbox in the header template.

I was using http://www.aspboy.com/Categories/GridArticles/Hierarchical_GridView_With_Clickable_Rows.aspx asa a basis for my code.

Iv'e tried the following code to see if i could figure it out but it does not recognise my cbAll (the checkbox in the headertemplate of the child gridview)
Protected Sub cbAll_CheckChanged(ByVal s As Object, ByVal e As EventArgs)
        Dim blnChecked As Boolean = False
 
 
        For Each gvRow As GridViewRow In gvParent.Rows
            '// get the checkboxed items for the assets
            Dim gvChildAsset As GridView = (DirectCast(gvRow.FindControl("gvChildAssets"), GridView))
            '// for each of the rows in the child task gridview
            ' For Each dc System.web.DataControlField in gvchildasset.columns
            For Each dc As DataControlField In gvChildAsset.Columns
                If TypeOf dc Is TemplateField Then
                    Dim cbAll As CheckBox = (DirectCast(gvChildAsset.FindControl("cbAll"), CheckBox))
                    If isNull(cbAll) Then Continue For
                    If cbAll.Checked Then
                        blnChecked = True
                        Exit For
                    End If
                End If
            Next
 
            For Each gvChildAssetRow As GridViewRow In gvChildAsset.Rows
                Dim cb As CheckBox = (DirectCast(gvChildAssetRow.FindControl("cb"), CheckBox))
                If isNull(cb) Then Continue For
                If blnChecked Then
                    cb.Checked = True
                End If
            Next
        Next
    End Sub

Open in new window

Comment
Watch Question

CERTIFIED EXPERT
Most Valuable Expert 2012
Top Expert 2008

Commented:
It looks like you are calling FindControl from the GridView, but you need to call it from the GridViewRow.

GridViewRow line:

     Dim gvChildAsset As GridView = (DirectCast(gvRow.FindControl("gvChildAssets"), GridView))
 
GridView line:

     Dim cbAll As CheckBox = (DirectCast(gvChildAsset.FindControl("cbAll"), CheckBox))

The second line needs to be more like the first line.
 

Author

Commented:
Putting
Dim cbAll As CheckBox = (DirectCast(gvChildAsset.FindControl("cbAll"), CheckBox)) into a for each loop for the childAsset row does not work.  This was my first attempt before i got the checkbox of cbAll to be located.

CERTIFIED EXPERT
Most Valuable Expert 2012
Top Expert 2008
Commented:
Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.