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