Nested gridview select All

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

ddl_ex5Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
Bob LearnedConnect With a Mentor Commented:
I guess that I didn't make myself clear enough.  You need to use FindControl with a row from gvChildAsset, not the GridView itself.

Example:
    Dim cbAll As CheckBox = TryCast(gvChildAsset.Rows(0).FindControl("cbAll"), CheckBox)
0
 
Bob LearnedCommented:
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.
 
0
 
ddl_ex5Author 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.

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.