jmar_click
asked on
Nested repeater inside another nester repeater
Hi Experts,
I am trying to build a comments report wich is 3 levels deep. The top level is the 'Department' next level is the 'department's comments' then finally, the 'Products' that the comments was assigned.
For this I have a repeater that brings up a list of departments for a given date range that have comments, then I have a nested repeater to show the comments for each department. Now I need a 3rd repeater that will show the products for the comments since the customer service guys can select products and those get saved in a separate table that relates to the comment by comment and product ID.
For my first nested repeater I have this:
'Get the list of comments for the given department
Protected Sub rpt_report_ItemDataBound(B yVal sender As Object, ByVal e As System.Web.UI.WebControls. RepeaterIt emEventArg s) Handles rpt_report.ItemDataBound
'Get variables to send to stored proc
Dim startDate As String = Request.Form("txt_dateStar t")
Dim endDate As String = Request.Form("txt_dateEnd" )
Dim depId As Integer = e.Item.DataItem("depId")
'Attach datasource to repeater
Dim conn As New SqlConnection(System.Confi guration.C onfigurati onManager. AppSetting s("conn"))
conn.Open()
'Call the stored procedure we need
Dim sql As String = "exec sp_rpt_departments_10" & "'" & startDate & "'," & "'" & endDate & "'," & depId
Dim ds As New DataSet
Dim da As SqlDataAdapter
da = New SqlDataAdapter(sql, conn)
da.Fill(ds)
Dim nestedRpt As New Repeater
nestedRpt = e.Item.FindControl("rpt_co mments")
'Find nested repeater
If ds.Tables(0).Rows.Count > 0 Then
'Bind datasource
nestedRpt.DataSource = ds.Tables(0)
nestedRpt.DataBind()
Else
nestedRpt.Visible = False
End If
conn.Close()
End Sub
That works just fine, my question is, how do I access the ItemDataBound event of the nested repeater so that I can give the 3rd repeater a datasource based on the row id from the second repeater.
Thanks in advance, I really need this one.
-Javier
I am trying to build a comments report wich is 3 levels deep. The top level is the 'Department' next level is the 'department's comments' then finally, the 'Products' that the comments was assigned.
For this I have a repeater that brings up a list of departments for a given date range that have comments, then I have a nested repeater to show the comments for each department. Now I need a 3rd repeater that will show the products for the comments since the customer service guys can select products and those get saved in a separate table that relates to the comment by comment and product ID.
For my first nested repeater I have this:
'Get the list of comments for the given department
Protected Sub rpt_report_ItemDataBound(B
'Get variables to send to stored proc
Dim startDate As String = Request.Form("txt_dateStar
Dim endDate As String = Request.Form("txt_dateEnd"
Dim depId As Integer = e.Item.DataItem("depId")
'Attach datasource to repeater
Dim conn As New SqlConnection(System.Confi
conn.Open()
'Call the stored procedure we need
Dim sql As String = "exec sp_rpt_departments_10" & "'" & startDate & "'," & "'" & endDate & "'," & depId
Dim ds As New DataSet
Dim da As SqlDataAdapter
da = New SqlDataAdapter(sql, conn)
da.Fill(ds)
Dim nestedRpt As New Repeater
nestedRpt = e.Item.FindControl("rpt_co
'Find nested repeater
If ds.Tables(0).Rows.Count > 0 Then
'Bind datasource
nestedRpt.DataSource = ds.Tables(0)
nestedRpt.DataBind()
Else
nestedRpt.Visible = False
End If
conn.Close()
End Sub
That works just fine, my question is, how do I access the ItemDataBound event of the nested repeater so that I can give the 3rd repeater a datasource based on the row id from the second repeater.
Thanks in advance, I really need this one.
-Javier
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Yes, and the declaration at the top of the class
ASKER
That didn't work, but I think you gave me a lead to something that might work. I was getting an error:
Compiler Error Message: BC30506: Handles clause requires a WithEvents variable defined in the containing type or one of its base types.
But the Protected WithEvents rpt_comments As Repeater fixed that, i may be able to directly use the rpt_comments_ItemDataBound event for the nested repeater now. Let me try it
Compiler Error Message: BC30506: Handles clause requires a WithEvents variable defined in the containing type or one of its base types.
But the Protected WithEvents rpt_comments As Repeater fixed that, i may be able to directly use the rpt_comments_ItemDataBound
ASKER
It didn't work. I don't get an error, but the ItemDataBound event for the nested repeater never fires.
Can you give me a bit more explanation on your suggestion please?
Can you give me a bit more explanation on your suggestion please?
ASKER
heres a breakdown of the way the repeaters are set up
master repeater = rpt_report
->first nested repeater = rpt_comments (nested inside rpt_report)
--> --> 2nd nested repeater = rpt_departments (nested inside rpt_comments)
nestedRpt = e.Item.FindControl("rpt_co
Where do I add Protected WithEvents nestedRpt as Repeater, at the top of the class?