2009-10-28 Marek Habersack <mhabersack@novell.com>
authorMarek Habersack <grendel@twistedcode.net>
Wed, 28 Oct 2009 14:01:21 +0000 (14:01 -0000)
committerMarek Habersack <grendel@twistedcode.net>
Wed, 28 Oct 2009 14:01:21 +0000 (14:01 -0000)
* ListControl.cs: OnDataBinding must call base implementation
before performing the binding, so that DataSource can be assigned
from within the handler.

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

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

index 4f840da4d727d3480b68340cb857340bcb1e2cdc..b1637bdc05c905ebf2b04c0fcd757d552490ba12 100644 (file)
@@ -1,3 +1,9 @@
+2009-10-28  Marek Habersack  <mhabersack@novell.com>
+
+       * ListControl.cs: OnDataBinding must call base implementation
+       before performing the binding, so that DataSource can be assigned
+       from within the handler.
+
 2009-10-13  Marek Safar  <marek.safar@novell.com>
 
        * WebColorConverter.cs: Delegate ConvertFrom to
index 1c57956d52054a6991e058eaa3582b343222b89d..1c0ff03a46793c2c3d83ffd59073a9fa75c01cab 100644 (file)
@@ -389,6 +389,7 @@ namespace System.Web.UI.WebControls {
 
                protected override void OnDataBinding (EventArgs e)
                {
+                       base.OnDataBinding (e);
 #if !NET_2_0
                        IEnumerable list = DataSourceResolver.ResolveDataSource (DataSource, DataMember);
                        PerformDataBinding (list);
@@ -396,7 +397,6 @@ namespace System.Web.UI.WebControls {
                        IEnumerable list = GetData ().ExecuteSelect (DataSourceSelectArguments.Empty);
                        InternalPerformDataBinding (list);
 #endif
-                       base.OnDataBinding (e);
                }
 
 #if NET_2_0
@@ -439,32 +439,34 @@ namespace System.Web.UI.WebControls {
                                Items.Clear ();
 
                        string format = DataTextFormatString;
-                       if (format == "")
+                       if (format.Length == 0)
                                format = null;
 
                        string text_field = DataTextField;
                        string value_field = DataValueField;
+
+                       if (text_field.Length == 0)
+                               text_field = null;
+                       if (value_field.Length == 0)
+                               value_field = null;
+                       
                        ListItemCollection coll = Items;
                        foreach (object container in dataSource) {
                                string text;
                                string val;
 
                                text = val = null;
-                               if (text_field != "") {
+                               if (text_field != null)
                                        text = DataBinder.GetPropertyValue (container, text_field, format);
-                               }
-
-                               if (value_field != "") {
+                               
+                               if (value_field != null)
                                        val = DataBinder.GetPropertyValue (container, value_field).ToString ();
-                               }
-                               else if (text_field == "") {
+                               else if (text_field == null) {
                                        text = val = container.ToString ();
                                        if (format != null)
                                                text = String.Format (format, container);
-                               }
-                               else if (text != null) {
+                               } else if (text != null)
                                        val = text;
-                               }
 
                                if (text == null)
                                        text = val;