Author: adar
Date: 2007-01-18 04:28:55 -0500 (Thu, 18 Jan 2007)
New Revision: 71240

Modified:
   
branches/mainsoft/gh20preview2/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
   
branches/mainsoft/gh20preview2/mcs/class/System.Web/System.Web.UI.WebControls/Repeater.cs
   
branches/mainsoft/gh20preview2/mcs/class/System.Web/Test/System.Web.UI.WebControls/RepeaterTest.cs
Log:
2007-01-17  Adar Wesley <[EMAIL PROTECTED]>

        * Repeater.cs: refactored GetData to return data both from DataSource
        and DataSrouceID, Implemented EnableTheming, updated initialization of
        DataBinding according to the pattern of BaseDataBoundControl, fixed
        SelectArguments implementation to call the virtual
        CreateDataSourceSelectArguments method.



Modified: 
branches/mainsoft/gh20preview2/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
===================================================================
--- 
branches/mainsoft/gh20preview2/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
     2007-01-18 08:30:31 UTC (rev 71239)
+++ 
branches/mainsoft/gh20preview2/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
     2007-01-18 09:28:55 UTC (rev 71240)
@@ -1,3 +1,11 @@
+2007-01-17  Adar Wesley <[EMAIL PROTECTED]>
+
+       * Repeater.cs: refactored GetData to return data both from DataSource
+       and DataSrouceID, Implemented EnableTheming, updated initialization of
+       DataBinding according to the pattern of BaseDataBoundControl, fixed
+       SelectArguments implementation to call the virtual 
+       CreateDataSourceSelectArguments method.
+
 2007-01-17  Konstantin Triger <[EMAIL PROTECTED]>
 
        * BaseValidator.cs: ToString the validating property value or

Modified: 
branches/mainsoft/gh20preview2/mcs/class/System.Web/System.Web.UI.WebControls/Repeater.cs
===================================================================
--- 
branches/mainsoft/gh20preview2/mcs/class/System.Web/System.Web.UI.WebControls/Repeater.cs
   2007-01-18 08:30:31 UTC (rev 71239)
+++ 
branches/mainsoft/gh20preview2/mcs/class/System.Web/System.Web.UI.WebControls/Repeater.cs
   2007-01-18 09:28:55 UTC (rev 71240)
@@ -58,6 +58,7 @@
 #if NET_2_0
                IDataSource boundDataSource;
                private bool initialized;
+               private bool preRendered = false;
                private bool requiresDataBinding;
                private DataSourceSelectArguments selectArguments;
                private IEnumerable data;
@@ -124,13 +125,7 @@
                        itemscol = null;
                        
                        if (useDataSource) {
-#if NET_2_0
-                               if (IsBoundUsingDataSourceID) {
-                                       ds = GetData ();
-                               }
-                               else
-#endif
-                                       ds = 
DataSourceResolver.ResolveDataSource (DataSource, DataMember);
+                               ds = GetData ();
                        }
                        else {
                                // Optimize (shouldn't need all this memory ;-)
@@ -315,15 +310,10 @@
                }
 
                [Browsable (true)]
-               [MonoTODO ("Not implemented")]
-               public virtual new bool EnableTheming
-               {
-                       get {
-                               throw new NotImplementedException ();
-                       }
-                       set {
-                               throw new NotImplementedException ();
-                       }
+               [DefaultValue(false)]
+               public override bool EnableTheming {
+                       get { return base.EnableTheming; }
+                       set { base.EnableTheming = value; }
                }
 #endif         
 
@@ -465,27 +455,28 @@
                protected bool RequiresDataBinding
                {
                        get { return requiresDataBinding; }
-                       set { requiresDataBinding = value; }
+                       set { 
+                               requiresDataBinding = value;
+                               if (value && preRendered && 
IsBoundUsingDataSourceID && Page != null && !Page.IsCallback)
+                                       EnsureDataBound ();
+                       }
                }
 
                protected DataSourceSelectArguments SelectArguments
                {
                        get {
-                               /* i know this seems weird - i mean, why
-                                * don't we call
-                                * CreateDataSourceSelectArguments here?  i
-                                * have no idea. ask MS */
+                               // MSDN: The first call to the SelectArguments 
property calls the 
+                               // CreateDataSourceSelectArguments method to 
return the Empty value.
                                if (selectArguments == null)
-                                       selectArguments = new 
DataSourceSelectArguments ();
+                                       selectArguments = 
CreateDataSourceSelectArguments();
                                return selectArguments;
                        }
                }
 
                protected virtual DataSourceSelectArguments 
CreateDataSourceSelectArguments ()
                {
-                       if (selectArguments == null)
-                               selectArguments = new DataSourceSelectArguments 
();
-                       return selectArguments;
+                       // MSDN: Returns the Empty value. 
+                       return DataSourceSelectArguments.Empty;
                }
 
                protected void EnsureDataBound ()
@@ -499,25 +490,39 @@
                        this.data = data;
                }
 
-               protected virtual IEnumerable GetData ()
+#endif
+#if NET_2_0
+               protected virtual 
+#endif
+               IEnumerable GetData ()
                {
                        IEnumerable result;
-                       if (DataSourceID.Length == 0)
-                               return null;
+#if NET_2_0
+                       if (IsBoundUsingDataSourceID) {
+                               if (DataSourceID.Length == 0)
+                                       return null;
 
-                       if (boundDataSource == null)
-                               return null;
+                               if (boundDataSource == null)
+                                       return null;
 
-                       DataSourceView dsv = boundDataSource.GetView 
(String.Empty);
-                       dsv.Select (SelectArguments, new 
DataSourceViewSelectCallback (SelectCallback));
+                               DataSourceView dsv = boundDataSource.GetView 
(String.Empty);
+                               dsv.Select (SelectArguments, new 
DataSourceViewSelectCallback (SelectCallback));
 
-                       result = data;
-                       data = null;
+                               result = data;
+                               data = null;
+                       }
+                       else
+#endif
+                               result = DataSourceResolver.ResolveDataSource 
(DataSource, DataMember);
+
                        return result;
                }
 
+#if NET_2_0
                protected virtual void OnDataPropertyChanged ()
                {
+                       if (Initialized)
+                               RequiresDataBinding = true;
                }
 
                protected virtual void OnDataSourceViewChanged (object sender, 
EventArgs e)
@@ -528,22 +533,43 @@
                protected internal override void OnInit (EventArgs e)
                {
                        base.OnInit (e);
+                       Page.PreLoad += new EventHandler (OnPagePreLoad);
+
+                       if (!IsViewStateEnabled && Page != null && 
Page.IsPostBack)
+                               RequiresDataBinding = true;
                }
 
+               protected virtual void OnPagePreLoad (object sender, EventArgs 
e) 
+               {
+                       ConfirmInitState ();
+               }
+
+               void ConfirmInitState () 
+               {
+                       initialized = true;
+               }
+
                protected internal override void OnLoad (EventArgs e)
                {
-                       if ((Page != null) && !Page.IsPostBack)
-                               RequiresDataBinding = true;
+                       Initialize ();
 
-                       initialized = true;
+                       ConfirmInitState ();
+
                        base.OnLoad (e);
 
                        if (IsBoundUsingDataSourceID)
                                ConnectToDataSource ();
                }
 
+               private void Initialize () 
+               {
+                       if ((Page != null) && !Page.IsPostBack)
+                               RequiresDataBinding = true;
+               }
+
                protected internal override void OnPreRender (EventArgs e)
                {
+                       preRendered = true;
                        EnsureDataBound ();
                        base.OnPreRender (e);
                }

Modified: 
branches/mainsoft/gh20preview2/mcs/class/System.Web/Test/System.Web.UI.WebControls/RepeaterTest.cs
===================================================================
--- 
branches/mainsoft/gh20preview2/mcs/class/System.Web/Test/System.Web.UI.WebControls/RepeaterTest.cs
  2007-01-18 08:30:31 UTC (rev 71239)
+++ 
branches/mainsoft/gh20preview2/mcs/class/System.Web/Test/System.Web.UI.WebControls/RepeaterTest.cs
  2007-01-18 09:28:55 UTC (rev 71240)
@@ -34,8 +34,8 @@
 using System.Globalization;
 using System.Web;
 using System.Web.UI;
-using System.Web.UI.WebControls;
-using MonoTests.SystemWeb.Framework;
+using System.Web.UI.WebControls;
+using MonoTests.SystemWeb.Framework;
 using System.Collections;
 
 namespace MonoTests.System.Web.UI.WebControls
@@ -68,56 +68,56 @@
                        public DataSourceSelectArguments 
DoCreateDataSourceSelectArguments ()
                        {
                                return base.CreateDataSourceSelectArguments();
-                       }
-
-                       public new void EnsureDataBound ()
-                       {
-                               base.EnsureDataBound ();
-                       }
-
-                       public global::System.Collections.IEnumerable DoGetData 
()
-                       {
-                               return base.GetData ();
-                       }
-
-                       public new bool Initialized
-                       {
-                               get { return base.Initialized; }
-                       }
-
-                       public new bool IsBoundUsingDataSourceID
-                       {
-                               get { return base.IsBoundUsingDataSourceID; }
-                       }
-
-                       protected override void OnDataPropertyChanged ()
-                       {
-                               eventChecker = true;
-                               base.OnDataPropertyChanged ();
-                       }
-
-                       public void DoOnDataSourceViewChanged (object sender, 
EventArgs e)
-                       {
-                               base.OnDataSourceViewChanged (sender, e);
-                       }
-
-                       public new bool RequiresDataBinding
-                       {
-                               get { return base.RequiresDataBinding; }
-                               set { base.RequiresDataBinding = value; }
-                       }
-
-                       bool eventChecker;
-                       public bool EventChecker
-                       {
-                               get { return eventChecker; }
-                               set { throw new NotImplementedException (); }
-                       }
-
-                       public void clearEvents ()
-                       {
-                               eventChecker = false;
                        }
+
+                       public new void EnsureDataBound ()
+                       {
+                               base.EnsureDataBound ();
+                       }
+
+                       public global::System.Collections.IEnumerable DoGetData 
()
+                       {
+                               return base.GetData ();
+                       }
+
+                       public new bool Initialized
+                       {
+                               get { return base.Initialized; }
+                       }
+
+                       public new bool IsBoundUsingDataSourceID
+                       {
+                               get { return base.IsBoundUsingDataSourceID; }
+                       }
+
+                       protected override void OnDataPropertyChanged ()
+                       {
+                               eventChecker = true;
+                               base.OnDataPropertyChanged ();
+                       }
+
+                       public void DoOnDataSourceViewChanged (object sender, 
EventArgs e)
+                       {
+                               base.OnDataSourceViewChanged (sender, e);
+                       }
+
+                       public new bool RequiresDataBinding
+                       {
+                               get { return base.RequiresDataBinding; }
+                               set { base.RequiresDataBinding = value; }
+                       }
+
+                       bool eventChecker;
+                       public bool EventChecker
+                       {
+                               get { return eventChecker; }
+                               set { throw new NotImplementedException (); }
+                       }
+
+                       public void clearEvents ()
+                       {
+                               eventChecker = false;
+                       }
 #endif
                }
 
@@ -144,163 +144,159 @@
                        /* check to see whether multiple calls give us 
different refs */
                        args = p.DoCreateDataSourceSelectArguments();
                        
-                       Assert.AreEqual (args, args2, "multiple calls, same 
ref");
-                       Assert.AreEqual (string.Empty, p.DataSourceID, 
"DataSourceID");
+                       Assert.AreEqual (args, args2, "multiple calls, same 
ref");
+                       Assert.AreEqual (string.Empty, p.DataSourceID, 
"DataSourceID");
                        Assert.AreEqual (false, p.RequiresDataBinding, 
"RequiresDataBinding");
-               }
-
-               [Test]
-               [Category ("NotWorking")]
-               public void Repeater_DefaultsNotWorking ()
-               {
-                       Poker p = new Poker ();
-                       Assert.AreEqual (true, p.EnableTheming, 
"EnableTheming");
-               }
-
-
-               
-               [Test]
-               [Category("NunitWeb")]
-               [ExpectedException(typeof(HttpException))]
-               public void  EnsureDataBound ()
-               {
-                       WebTest t = new WebTest (PageInvoker.CreateOnInit 
(EnsureDataBound_Init));
-                       string html = t.Run ();
-               }
-
-               public static void EnsureDataBound_Init (Page p)
-               {
-                       Poker r = new Poker ();
-                       r.DataSourceID = "Fake";
-                       p.Form.Controls.Add (r);
-                       r.EnsureDataBound ();
-               }
-
-               [Test]
-               [Category ("NotWorking")]
-               public void GetData ()
-               {
-                       Poker p = new Poker ();
-                       p.DataSource = Databound ();
-                       ArrayList data = (ArrayList)p.DoGetData ();
-                       Assert.AreEqual (3, data.Count, "GetData#1");
-                       Assert.AreEqual (1, data[0], "GetData#2");
-               }
-
-               #region help_class
-               static ArrayList Databound ()
-               {
-                       ArrayList list = new ArrayList ();
-                       list.Add (1);
-                       list.Add (2);
-                       list.Add (3);
-                       return list;
-               }
-               #endregion
-
-               [Test]
-               [Category ("NotWorking")]
-               [Category ("NunitWeb")]
-               public void Initialized ()
-               {
-                       WebTest t = new WebTest ();
-                       PageDelegates pd = new PageDelegates ();
-                       pd.Init = new PageDelegate (Initialized_Init);
-                       pd.Load = new PageDelegate (Initialized_Load);
-                       t.Invoker = new PageInvoker (pd);
-                       string html = t.Run ();
-               }
-
-               public static void Initialized_Init (Page p)
-               {
-                       Poker r = new Poker ();
-                       r.ID = "Rep";
-                       Assert.AreEqual (false, r.Initialized, "Initialized#1");
-                       r.DataSource = Databound ();
-                       p.Form.Controls.Add (r);
-               }
-
-               public static void Initialized_Load (Page p)
-               {
-                       Poker r = p.FindControl ("Rep") as Poker; 
-                       Assert.AreEqual (true, r.Initialized, "Initialized#2");
-               }
-
-               [Test]
-               public void IsBoundUsingDataSourceID ()
-               {
-                       Poker p = new Poker ();
-                       Assert.AreEqual (false, p.IsBoundUsingDataSourceID, 
"IsBoundUsingDataSourceID#1");
-                       p.DataSourceID = "Fake";
-                       Assert.AreEqual (true, p.IsBoundUsingDataSourceID, 
"IsBoundUsingDataSourceID#2");
-               }
-
-               [Test]
-               public void OnDataPropertyChanged ()
-               {
-                       Poker p = new Poker ();
-                       p.clearEvents ();
-                       p.DataSourceID = "Fake";
-                       Assert.AreEqual (true, p.EventChecker, 
"OnDataPropertyChanged#1");
-               }
-
-               [Test]
-               public void OnDataSourceViewChanged ()
-               {
-                       Poker p = new Poker ();
-                       Assert.AreEqual (false, p.RequiresDataBinding, 
"OnDataSourceViewChanged#1");
-                       p.DoOnDataSourceViewChanged (p, new EventArgs ());
-                       Assert.AreEqual (true, p.RequiresDataBinding, 
"OnDataSourceViewChanged#2");
-               }
-
-               #region help_class_for_select_args
-               class PokerS : Repeater
-               {
-
-                       public void TrackState ()
-                       {
-                               TrackViewState ();
-                       }
-
-                       public object SaveState ()
-                       {
-                               return SaveViewState ();
-                       }
-
-                       public void LoadState (object o)
-                       {
-                               LoadViewState (o);
-                       }
-
-#if NET_2_0
-                       public DataSourceSelectArguments GetSelectArguments ()
-                       {
-                               return SelectArguments;
-                       }
-
-                       protected override DataSourceSelectArguments 
CreateDataSourceSelectArguments ()
-                       {
-                               DataSourceSelectArguments arg = new 
DataSourceSelectArguments ("SortExp");
-                               return arg;
-                       }
-#endif
-               }
-               #endregion
-
-               [Test]
-               [Category ("NotWorking")]
-               public void GetSelectArguments ()
-               {
-                       PokerS p = new PokerS ();
-                       DataSourceSelectArguments arg = p.GetSelectArguments ();
-                       Assert.AreEqual ("SortExp", arg.SortExpression, 
"GetSelectArguments");
-               }
-
-               [TestFixtureTearDown]
-               public void TearDown ()
-               {
-                       WebTest.Unload ();
-               }
-#endif
+               }
+
+               [Test]
+               public void Repeater_Defaults ()
+               {
+                       Poker p = new Poker ();
+                       Assert.AreEqual (true, p.EnableTheming, 
"EnableTheming");
+               }
+
+
+               
+               [Test]
+               [Category("NunitWeb")]
+               [ExpectedException(typeof(HttpException))]
+               public void  EnsureDataBound ()
+               {
+                       WebTest t = new WebTest (PageInvoker.CreateOnInit 
(EnsureDataBound_Init));
+                       string html = t.Run ();
+               }
+
+               public static void EnsureDataBound_Init (Page p)
+               {
+                       Poker r = new Poker ();
+                       r.DataSourceID = "Fake";
+                       p.Form.Controls.Add (r);
+                       r.EnsureDataBound ();
+               }
+
+               [Test]
+               public void GetData ()
+               {
+                       Poker p = new Poker ();
+                       p.DataSource = Databound ();
+                       ArrayList data = (ArrayList)p.DoGetData ();
+                       Assert.AreEqual (3, data.Count, "GetData#1");
+                       Assert.AreEqual (1, data[0], "GetData#2");
+               }
+
+               #region help_class
+               static ArrayList Databound ()
+               {
+                       ArrayList list = new ArrayList ();
+                       list.Add (1);
+                       list.Add (2);
+                       list.Add (3);
+                       return list;
+               }
+               #endregion
+
+               [Test]
+               [Category ("NunitWeb")]
+               public void Initialized ()
+               {
+                       WebTest t = new WebTest ();
+                       PageDelegates pd = new PageDelegates ();
+                       pd.Init = new PageDelegate (Initialized_Init);
+                       pd.Load = new PageDelegate (Initialized_Load);
+                       t.Invoker = new PageInvoker (pd);
+                       string html = t.Run ();
+               }
+
+               public static void Initialized_Init (Page p)
+               {
+                       Poker r = new Poker ();
+                       r.ID = "Rep";
+                       Assert.AreEqual (false, r.Initialized, "Initialized#1");
+                       r.DataSource = Databound ();
+                       p.Form.Controls.Add (r);
+               }
+
+               public static void Initialized_Load (Page p)
+               {
+                       Poker r = p.FindControl ("Rep") as Poker; 
+                       Assert.AreEqual (true, r.Initialized, "Initialized#2");
+               }
+
+               [Test]
+               public void IsBoundUsingDataSourceID ()
+               {
+                       Poker p = new Poker ();
+                       Assert.AreEqual (false, p.IsBoundUsingDataSourceID, 
"IsBoundUsingDataSourceID#1");
+                       p.DataSourceID = "Fake";
+                       Assert.AreEqual (true, p.IsBoundUsingDataSourceID, 
"IsBoundUsingDataSourceID#2");
+               }
+
+               [Test]
+               public void OnDataPropertyChanged ()
+               {
+                       Poker p = new Poker ();
+                       p.clearEvents ();
+                       p.DataSourceID = "Fake";
+                       Assert.AreEqual (true, p.EventChecker, 
"OnDataPropertyChanged#1");
+               }
+
+               [Test]
+               public void OnDataSourceViewChanged ()
+               {
+                       Poker p = new Poker ();
+                       Assert.AreEqual (false, p.RequiresDataBinding, 
"OnDataSourceViewChanged#1");
+                       p.DoOnDataSourceViewChanged (p, new EventArgs ());
+                       Assert.AreEqual (true, p.RequiresDataBinding, 
"OnDataSourceViewChanged#2");
+               }
+
+               #region help_class_for_select_args
+               class PokerS : Repeater
+               {
+
+                       public void TrackState ()
+                       {
+                               TrackViewState ();
+                       }
+
+                       public object SaveState ()
+                       {
+                               return SaveViewState ();
+                       }
+
+                       public void LoadState (object o)
+                       {
+                               LoadViewState (o);
+                       }
+
+#if NET_2_0
+                       public DataSourceSelectArguments GetSelectArguments ()
+                       {
+                               return SelectArguments;
+                       }
+
+                       protected override DataSourceSelectArguments 
CreateDataSourceSelectArguments ()
+                       {
+                               DataSourceSelectArguments arg = new 
DataSourceSelectArguments ("SortExp");
+                               return arg;
+                       }
+#endif
+               }
+               #endregion
+
+               [Test]
+               public void GetSelectArguments ()
+               {
+                       PokerS p = new PokerS ();
+                       DataSourceSelectArguments arg = p.GetSelectArguments ();
+                       Assert.AreEqual ("SortExp", arg.SortExpression, 
"GetSelectArguments");
+               }
+
+               [TestFixtureTearDown]
+               public void TearDown ()
+               {
+                       WebTest.Unload ();
+               }
+#endif
        }
 }

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to