2007-11-06 Igor Zelmanovich <igorz@mainsoft.com>
authorIgor Zelmanovich <igorz@mono-cvs.ximian.com>
Tue, 6 Nov 2007 09:17:06 +0000 (09:17 -0000)
committerIgor Zelmanovich <igorz@mono-cvs.ximian.com>
Tue, 6 Nov 2007 09:17:06 +0000 (09:17 -0000)
* ListControl.cs:
SelectedValue/SelectedIndex is set during DataBinding always.

2007-11-06 Igor Zelmanovich <igorz@mainsoft.com>

* ListControlTest.cs:
Added new tests.

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

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

index d3d43e802f3de64818f3c1b32b5764348ad07711..b5ae62d19ca08ea8b9a260a1c7ccaf885dc5ac36 100644 (file)
@@ -1,3 +1,8 @@
+2007-11-06 Igor Zelmanovich <igorz@mainsoft.com>
+
+       * ListControl.cs:
+       SelectedValue/SelectedIndex is set during DataBinding always.    
+
 2007-11-06  Marek Habersack  <mhabersack@novell.com>
 
        * DataGrid.cs: add RenderTable before the DataGridItems, so that
index 5ea3f5bc8fc93027463e2bb91aa715725412a87f..fe69ad0f346334df464d23567a283d0859df74ac 100644 (file)
@@ -429,7 +429,11 @@ namespace System.Web.UI.WebControls {
                void PerformDataBinding (IEnumerable dataSource)
                {
                        if (dataSource == null)
+#if NET_2_0
+                               goto setselected;
+#else
                                return;
+#endif
 #if NET_2_0
                        if (!AppendDataBoundItems)
 #endif
@@ -470,6 +474,7 @@ namespace System.Web.UI.WebControls {
                        }
 
 #if NET_2_0
+               setselected:
                        if (!String.IsNullOrEmpty (_selectedValue)) {
                                if (!SetSelectedValue (_selectedValue))
                                        throw new ArgumentOutOfRangeException ("value", String.Format ("'{0}' has a SelectedValue which is invalid because it does not exist in the list of items.", ID));
index cbbe8185489cb5346e220464d9add9dc1857da5d..8c3c68452a9ecd3b6ad7bcec0e7b9f42e0117af1 100644 (file)
@@ -1,3 +1,8 @@
+2007-11-06 Igor Zelmanovich <igorz@mainsoft.com>
+
+       * ListControlTest.cs:
+       Added new tests.
+
 2007-10-31 Igor Zelmanovich <igorz@mainsoft.com>
 
        * DataListTest.cs:
index ef95a929aad2edd747c29f78c81173c48d62f30e..dee692f3e343ebb643ebb1af1ac815471354e750 100644 (file)
@@ -1035,6 +1035,35 @@ namespace MonoTests.System.Web.UI.WebControls
                        p.VerifyMultiSelect ();
                }
 
+               [Test]
+               public void DataBinding_SelectedValue () {
+                       ListControlPoker p = new ListControlPoker ();
+                       p.SelectedValue = "b";
+
+                       p.Items.Add (new ListItem ("a", "a"));
+                       p.Items.Add (new ListItem ("b", "b"));
+                       p.Items.Add (new ListItem ("c", "c"));
+
+                       Assert.IsFalse (p.Items [1].Selected, "SelectedIndex");
+                       p.DataBind ();
+                       Assert.IsTrue (p.Items [1].Selected, "SelectedIndex");
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentOutOfRangeException))]
+               public void DataBinding_SelectedValue_Exception () {
+                       ListControlPoker p = new ListControlPoker ();
+                       p.SelectedValue = "AAA";
+
+                       p.Items.Add (new ListItem ("a", "a"));
+                       p.Items.Add (new ListItem ("b", "b"));
+                       p.Items.Add (new ListItem ("c", "c"));
+
+                       Assert.IsFalse (p.Items [1].Selected, "SelectedIndex");
+                       p.DataBind ();
+                       Assert.IsTrue (p.Items [1].Selected, "SelectedIndex");
+               }
+
                [TestFixtureTearDown]
                public void TearDown ()
                {