New tests.
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / FormView.cs
index 5949189a3014ac7b267bfd9f1556a5fac0a14345..099ceb54126870937b3078e7a62e0b4d90078923 100644 (file)
@@ -88,18 +88,18 @@ namespace System.Web.UI.WebControls
                DataKey key;
                DataKey oldEditValues;
                
-               private static readonly object PageIndexChangedEvent = new object();
-               private static readonly object PageIndexChangingEvent = new object();
-               private static readonly object ItemCommandEvent = new object();
-               private static readonly object ItemCreatedEvent = new object();
-               private static readonly object ItemDeletedEvent = new object();
-               private static readonly object ItemDeletingEvent = new object();
-               private static readonly object ItemInsertedEvent = new object();
-               private static readonly object ItemInsertingEvent = new object();
-               private static readonly object ModeChangingEvent = new object();
-               private static readonly object ModeChangedEvent = new object();
-               private static readonly object ItemUpdatedEvent = new object();
-               private static readonly object ItemUpdatingEvent = new object();
+               static readonly object PageIndexChangedEvent = new object();
+               static readonly object PageIndexChangingEvent = new object();
+               static readonly object ItemCommandEvent = new object();
+               static readonly object ItemCreatedEvent = new object();
+               static readonly object ItemDeletedEvent = new object();
+               static readonly object ItemDeletingEvent = new object();
+               static readonly object ItemInsertedEvent = new object();
+               static readonly object ItemInsertingEvent = new object();
+               static readonly object ModeChangingEvent = new object();
+               static readonly object ModeChangedEvent = new object();
+               static readonly object ItemUpdatedEvent = new object();
+               static readonly object ItemUpdatingEvent = new object();
                
                // Control state
                int pageIndex;
@@ -464,7 +464,7 @@ namespace System.Web.UI.WebControls
                [Browsable (false)]
                public virtual ITemplate EditItemTemplate {
                        get { return editItemTemplate; }
-                       set { editItemTemplate = value; RequireBinding (); }
+                       set { editItemTemplate = value; }
                }
 
                [WebCategoryAttribute ("Styles")]
@@ -505,7 +505,7 @@ namespace System.Web.UI.WebControls
                [Browsable (false)]
                public virtual ITemplate EmptyDataTemplate {
                        get { return emptyDataTemplate; }
-                       set { emptyDataTemplate = value; RequireBinding (); }
+                       set { emptyDataTemplate = value; }
                }
                
                [LocalizableAttribute (true)]
@@ -538,7 +538,7 @@ namespace System.Web.UI.WebControls
                [Browsable (false)]
                public virtual ITemplate FooterTemplate {
                        get { return footerTemplate; }
-                       set { footerTemplate = value; RequireBinding (); }
+                       set { footerTemplate = value; }
                }
 
                [LocalizableAttribute (true)]
@@ -616,7 +616,7 @@ namespace System.Web.UI.WebControls
                [Browsable (false)]
                public virtual ITemplate HeaderTemplate {
                        get { return headerTemplate; }
-                       set { headerTemplate = value; RequireBinding (); }
+                       set { headerTemplate = value; }
                }
 
                [LocalizableAttribute (true)]
@@ -653,7 +653,7 @@ namespace System.Web.UI.WebControls
                [Browsable (false)]
                public virtual ITemplate InsertItemTemplate {
                        get { return insertItemTemplate; }
-                       set { insertItemTemplate = value; RequireBinding (); }
+                       set { insertItemTemplate = value; }
                }
 
                [WebCategoryAttribute ("Styles")]
@@ -678,7 +678,7 @@ namespace System.Web.UI.WebControls
                [Browsable (false)]
                public virtual ITemplate ItemTemplate {
                        get { return itemTemplate; }
-                       set { itemTemplate = value; RequireBinding (); }
+                       set { itemTemplate = value; }
                }
                
                [BrowsableAttribute (false)]
@@ -741,13 +741,12 @@ namespace System.Web.UI.WebControls
                
                
                [DefaultValue (null)]
-               /* DataControlPagerCell isnt specified in the docs */
-               //[TemplateContainer (typeof(DataControlPagerCell), BindingDirection.OneWay)]
+               [TemplateContainerAttribute (typeof (FormView))]
                [PersistenceMode (PersistenceMode.InnerProperty)]
                [Browsable (false)]
                public virtual ITemplate PagerTemplate {
                        get { return pagerTemplate; }
-                       set { pagerTemplate = value; RequireBinding (); }
+                       set { pagerTemplate = value; }
                }
                
                [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
@@ -842,8 +841,10 @@ namespace System.Web.UI.WebControls
                
                protected virtual FormViewRow CreateRow (int rowIndex, DataControlRowType rowType, DataControlRowState rowState)
                {
-                       FormViewRow row = new FormViewRow (rowIndex, rowType, rowState);
-                       return row;
+                       if (rowType == DataControlRowType.Pager)
+                               return new FormViewPagerRow (rowIndex, rowType, rowState);
+                       else
+                               return new FormViewRow (rowIndex, rowType, rowState);
                }
                
                void RequireBinding ()
@@ -864,7 +865,7 @@ namespace System.Web.UI.WebControls
                                if (RequiresDataBinding) {
                                        OnDataBinding (EventArgs.Empty);
                                        RequiresDataBinding = false;
-                                       PerformDataBinding (null);
+                                       InternalPerformDataBinding (null);
                                        MarkAsDataBound ();
                                        OnDataBound (EventArgs.Empty);
                                }
@@ -897,7 +898,8 @@ namespace System.Web.UI.WebControls
                                }
                        }
 
-                       bool showPager = AllowPaging && (dataSource.PageCount > 1);
+                       PagerSettings pagerSettings = PagerSettings;
+                       bool showPager = AllowPaging && pagerSettings.Visible && (dataSource.PageCount > 1);
                        
                        Controls.Clear ();
                        table = CreateTable ();
@@ -946,8 +948,8 @@ namespace System.Web.UI.WebControls
                                InitializeRow (headerRow);
                                table.Rows.Add (headerRow);
                        }
-                       
-                       if (showPager && PagerSettings.Position == PagerPosition.Top || PagerSettings.Position == PagerPosition.TopAndBottom) {
+
+                       if (showPager && pagerSettings.Position == PagerPosition.Top || pagerSettings.Position == PagerPosition.TopAndBottom) {
                                topPagerRow = CreateRow (-1, DataControlRowType.Pager, DataControlRowState.Normal);
                                InitializePager (topPagerRow, dataSource);
                                table.Rows.Add (topPagerRow);
@@ -980,16 +982,16 @@ namespace System.Web.UI.WebControls
                                table.Rows.Add (footerRow);
                        }
                        
-                       if (showPager && PagerSettings.Position == PagerPosition.Bottom || PagerSettings.Position == PagerPosition.TopAndBottom) {
+                       if (showPager && pagerSettings.Position == PagerPosition.Bottom || pagerSettings.Position == PagerPosition.TopAndBottom) {
                                bottomPagerRow = CreateRow (0, DataControlRowType.Pager, DataControlRowState.Normal);
                                InitializePager (bottomPagerRow, dataSource);
                                table.Rows.Add (bottomPagerRow);
                        }
 
+                       OnItemCreated (EventArgs.Empty);
+                       
                        if (dataBinding)
                                DataBind (false);
-                       
-                       OnItemCreated (EventArgs.Empty);
 
                        return PageCount;
                }
@@ -1110,6 +1112,7 @@ namespace System.Web.UI.WebControls
                        
                        if (bt != null) {
                                IOrderedDictionary values = bt.ExtractValues (Row.Cells [0]);
+                               if (values != null)
                                foreach (DictionaryEntry e in values) {
                                        if (includeKeys || Array.IndexOf (DataKeyNames, e.Key) == -1)
                                                fieldValues [e.Key] = e.Value;