The problems is that you can't reference a repeated control directly in the code behind. Here's what you might try doing:
Somewhere in your 2nd level datalist, you have a button/link to drill down to the third level. This control should specify the event handler for its click event. Within the event handler, you could reference the event "sender" (the button) and from there work your way back to the DataListItem in which that button lives by using "Parent". The button's parent should be the DataListItem. Then you can access the necessary control within the DataListItem (might use FindControl for this) to get the information you need to pass to the getData() method in order to create the necessary data for the 3rd level datalist. Also, if you are using the DataKeys part of a datalist, then you can use that for your drill down information.
This is a classic case where you can't work with explicit class instances of a control that is in the markup because the control is repeated. The name you provide in the markup for that control will not exist in the codebehind because the control is a child of the repeating control. You need to work with relative objects.
Hope this helps.
Peter
-------------------------
Work smarter, not harder