Solved

Access child element in nested repeaters (ASP.NET/C#)

Posted on 2004-09-21
3
2,947 Views
Last Modified: 2011-04-14
Hi,

I have a page displaying bookmarks stored in a database, and organised in categories. The output has this form:

General bookmarks
     Bookmark1
     Bookmark2
     Bookmark3

Work
     Bookmark4
     Bookmark5

Funny stuff
      Bookmark6
      Bookmark7
      Bookmark8

I am displaying a checkbox next to each bookmark, and at the bottom of the list I have a delete button that should delete the bookmarks that have been checked by the user. The bookmarks and the categories are displayed using nested repeaters (where, naturally, the bookmarks are the child elements). When the button is clicked, it triggers an event that loops through the elements in the repeater, but I cant get it to loop through the child elements - only the parent (categories). The below code works fine for the parent elements (by using "parentrepeater" instead of "childrepeater")

for (int i = 0; i < childrepeater.Items.Count; i++) // error comes here - childrepeater seems to be unaccessible
{
      CheckBox CurrentCheckBox = new CheckBox();
      CurrentCheckBox = (CheckBox) childrepeater.Items[i].FindControl("Checkbox1");

      if (CurrentCheckBox.Checked)
      {
      // delete bookmark
      }
                  
}

But even though this code compiles, I get "Object reference not set to an instance of an object". The childrepeater is not initialised/instansiated, even though it's drawn on screen.

Anyone have an idea here? How do I access child elements in nested repeaters?

Andreas
0
Comment
Question by:UncleAndy
  • 2
3 Comments
 
LVL 2

Expert Comment

by:netjkus
ID: 12112229
0
 
LVL 2

Accepted Solution

by:
netjkus earned 300 total points
ID: 12112244
                      Repeater nestedRepeater = e.Item.FindControl("NestedRepeater")  as Repeater;
                        if(nestedRepeater != null)
                        {
                            nestedRepeater.DataSource =     dv.CreateChildView("CustomerOrders");
                            nestedRepeater.DataBind();
                        }
0
 
LVL 1

Author Comment

by:UncleAndy
ID: 12112549

Oh yes, there we go! Still a couple of issues I have to work out, but your tip helped me figure out how to get access to the child repeater. For others with a similar problem, here is my code:

// in the method triggered by the delete button
for (int i = 0; i < parentrepeater.Items.Count; i++)
{
      Repeater nestedRepeater = parentrepeater.Items[i].FindControl("childrepeater") as Repeater;

      for (int y = 0; y < nestedRepeater.Items.Count; y++)
      {
            CheckBox CurrentCheckBox = new CheckBox();
            CurrentCheckBox = (CheckBox) nestedRepeater.Items[y].FindControl("Checkbox1");

            if (CurrentCheckBox.Checked)
            {
                  // delete bokmark
            }
                  
      }
            
}

Thanks, netjkus! Problem solved within an hour!

Andreas
0

Featured Post

Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

Question has a verified solution.

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

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…
The article shows the basic steps of integrating an HTML theme template into an ASP.NET MVC project
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

776 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