2007-04-05 Marek Habersack <mhabersack@novell.com>
authorMarek Habersack <grendel@twistedcode.net>
Thu, 5 Apr 2007 11:25:05 +0000 (11:25 -0000)
committerMarek Habersack <grendel@twistedcode.net>
Thu, 5 Apr 2007 11:25:05 +0000 (11:25 -0000)
* BaseDataBoundControl.cs: restore the LAMESPEC note and code it
describes - tests show this is what's happening on MS.NET as
well.

svn path=/trunk/mcs/; revision=75425

mcs/class/System.Web/System.Web.UI.WebControls/BaseDataBoundControl.cs
mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog

index 11246c4d07b6f91e45f6622aac72fb6b7843ab0d..a032b2ba24f2fd9765caf7177ab63707392d0187 100644 (file)
@@ -107,10 +107,21 @@ namespace System.Web.UI.WebControls {
                                // to bind to, the DataBind method is called
                                // immediately. In this case, the
                                // RequiresDataBinding property is _not_ actually
-                               // set to true. 
-                               if (value && preRendered && IsBoundUsingDataSourceID && Page != null && !Page.IsCallback)
-                                       DataBind ();
-                               else
+                               // set to true.
+                               //
+                               // LAMESPEC, the docs quoted above mention that
+                               // DataBind is called in the described
+                               // case. This is wrong since that way we don't
+                               // break recursion when the property is set from
+                               // within the OnSelect handler in user's
+                               // code. EnsureDataBound makes sure that no
+                               // recursive binding is performed. Also the
+                               // property DOES get set in this case (according
+                               // to tests)
+                               if (value && preRendered && IsBoundUsingDataSourceID && Page != null && !Page.IsCallback) {
+                                       requiresDataBinding = true;
+                                       EnsureDataBound ();
+                               | else
                                        requiresDataBinding = value;
                        }
                }
index b3110860e8831336d7fb0267ed197dc71aa08548..c437123723e70388182976f49c12d28a61e21a64 100644 (file)
@@ -1,3 +1,9 @@
+2007-04-05  Marek Habersack  <mhabersack@novell.com>
+
+       * BaseDataBoundControl.cs: restore the LAMESPEC note and code it
+       describes - tests show this is what's happening on MS.NET as
+       well.
+
 2007-04-05 Igor Zelmanovich <igorz@mainsoft.com>
 
        * GridView.cs: