// [ControlBuilder (typeof(MultiViewControlBuilder)]
[Designer ("System.Web.UI.Design.WebControls.MultiViewDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
[ToolboxData ("<{0}:MultiView runat=\"server\"></{0}:MultiView>")]
- [ParseChildren (false, ChildControlType = typeof(View))]
+#if NET_2_0
+ [ParseChildren (typeof(View))]
+#else
+ [ParseChildren (false)]
+#endif
[DefaultEvent ("ActiveViewChanged")]
public class MultiView: Control
{
int viewIndex = -1;
int initialIndex = -1;
- bool initied;
public event EventHandler ActiveViewChanged {
add { Events.AddHandler (ActiveViewChangedEvent, value); }
{
if (ob is View)
Controls.Add (ob as View);
+ // LAMESPEC: msdn talks that only View contorls are allowed, for others controls HttpException should be thrown
+ // but actually, aspx praser adds LiteralControl controls.
+ //else
+ // throw new HttpException ("MultiView cannot have children of type 'Control'. It can only have children of type View.");
}
protected override ControlCollection CreateControlCollection ()
[DefaultValue (-1)]
public virtual int ActiveViewIndex {
- get { return viewIndex; }
- set {
- if (!initied) {
+ get
+ {
+ if (Controls.Count == 0)
+ return initialIndex;
+
+ return viewIndex;
+ }
+ set
+ {
+ if (Controls.Count == 0) {
initialIndex = value;
return;
}
}
[Browsable (true)]
- [MonoTODO]
public virtual new bool EnableTheming
{
- get {
- throw new NotImplementedException ();
- }
- set {
- throw new NotImplementedException ();
- }
+ get { return base.EnableTheming; }
+ set { base.EnableTheming = value; }
}
[PersistenceMode (PersistenceMode.InnerDefaultProperty)]
protected internal override void OnInit (EventArgs e)
{
- initied = true;
Page.RegisterRequiresControlState (this);
if (initialIndex != -1) {
ActiveViewIndex = initialIndex;
void UpdateViewVisibility ()
{
for (int n=0; n<Views.Count; n++)
- Views [n].Visible = (n == viewIndex);
+ Views [n].VisibleInternal = (n == viewIndex);
}
protected internal override void RemovedControl (Control ctl)
protected internal override void Render (HtmlTextWriter writer)
{
- if (!initied) viewIndex = initialIndex;
+ if ((Controls.Count == 0) && (initialIndex != -1))
+ viewIndex = initialIndex;
if (viewIndex != -1)
GetActiveView ().Render (writer);
}