ASP.NET does not save state of controls whose Visibile property is false. What you can do is introduce a new property onto the PlaceHolder which controls whether or not to render the children.
public class MyPlaceHolder : PlaceHolder {
public bool ToRender {
get {
object o = this.ViewState["ToRender"]l
return (o != null) ? (bool)o : true;
}
set {
this.ViewState["ToRender"] = value;
}
}
protected override void Render(HtmlTextWriter writer) {
if (this.ToRender) {
base.Render(writer);
}
}
}
-- Justin Lovell