Platform: ASP.NET 1.1
I have a repeater nested inside another repeater. My outer repeater is
looping fine. I am manually binding the inner repeater to a DataReader
obtained from another function.
My objects aren't null, my ItemDataBound() method is being called, and as
you can see I have verified that I have data.
Yet, the repeater does not appear in the final HTML, and what's more, after
the DataBind() call, the .Items.Count property is still 0. What am I doing
wrong?
Here is the code (I apologise for any text wrapping - is there a way to turn
that off?):
//------------------------------------------
protected void OuterRepeater_ItemDataBound( object sender,
System.Web.UI.WebControls.RepeaterItemEventArgs e )
{
System.Web.UI.WebControls.ListItemType lt = e.Item.ItemType ;
if ( lt == System.Web.UI.WebControls.ListItemType.Item ||
lt == System.Web.UI.WebControls.ListItemType.Alternating Item )
{
System.Web.UI.WebControls.Repeater innerRepeater ;
System.Data.Common.DbDataRecord dr = e.Item.DataItem as
System.Data.Common.DbDataRecord ;
if ( dr != null)
{
string cChildKeyValue = dr["CHILD_KEY"].ToString() ;
System.Data.SqlClient.SqlDataReader oReader =
this.getChildDataFor( cChildKeyValue ) ;
if ( oReader != null )
{
innerRepeater = e.Item.FindControl("InnerRepeater") as
Repeater ;
if ( rptrGlassPart != null )
{
// Prove we have the right data:
if ( false ) {
while( oReader.Read() )
{
Response.Write( "<div>Data: " +
oReader.GetString(0) + "</div>" );
}
}
else {
// These statements appear to have no effect.
// The repeater is not rendered in the output HTML:
innerRepeater.DataSource = oReader ;
innerRepeater.DataBind() ;
// innerRepeater.Items.Count = 0 at this point.
}
}
else {
Response.Write("<div>innerRepeater is null.</div>") ;
}
oReader.Close();
}
}
}
}
//------------------------------------------
Thanks in advance,
- Colin