Solved

Nested repeater inside another nester repeater

Posted on 2006-11-28
5
729 Views
Last Modified: 2008-01-09
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(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rpt_report.ItemDataBound

        'Get variables to send to stored proc
        Dim startDate As String = Request.Form("txt_dateStart")
        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.Configuration.ConfigurationManager.AppSettings("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_comments")

        '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
0
Comment
Question by:jmar_click
  • 3
  • 2
5 Comments
 
LVL 9

Accepted Solution

by:
kraffay earned 500 total points
ID: 18030268
Add this code to your class:

Protected WithEvents nestedRpt as Repeater

Then, on the ItemDataBound event of the master repeater, grab a handle to your nested repeater:

nestedRepeater = rpt_report.FindControl("nestedRepeater") -- <!-- this code is questionable, without seeing your markup, I can't know the exact syntax.

Once you have a handle to your repeater, you can dynamically set its datasource.
0
 
LVL 3

Author Comment

by:jmar_click
ID: 18030365
I have the first nested repeater working.

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_comments") <-- works fine to find the rpt_comments nested repeater. But maybe there is a better way.

Where do I add Protected WithEvents nestedRpt as Repeater, at the top of the class?
0
 
LVL 9

Expert Comment

by:kraffay
ID: 18030390
Yes, and the declaration at the top of the class
0
 
LVL 3

Author Comment

by:jmar_click
ID: 18030456
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
0
 
LVL 3

Author Comment

by:jmar_click
ID: 18030599
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?
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this Article, I will provide a few tips in problem and solution manner. Opening an ASPX page in Visual studio 2003 is very slow. To make it fast, please do follow below steps:   Open the Solution/Project. Right click the ASPX file to b…
In an ASP.NET application, I faced some technical problems. In this article, I list them out and show the solutions that I found.  I hope it will be useful. Problem: After closing a pop-up window, the parent page should be refreshed automaticall…
This tutorial gives a high-level tour of the interface of Marketo (a marketing automation tool to help businesses track and engage prospective customers and drive them to purchase). You will see the main areas including Marketing Activities, Design …
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now