Bläddra i källkod

2007-11-06 Igor Zelmanovich <[email protected]>

	* ListControl.cs:
	SelectedValue/SelectedIndex is set during DataBinding always. 	 

2007-11-06 Igor Zelmanovich <[email protected]>

	* ListControlTest.cs:
	Added new tests.

svn path=/trunk/mcs/; revision=88954
Igor Zelmanovich 18 år sedan
förälder
incheckning
03002226b2

+ 5 - 0
mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog

@@ -1,3 +1,8 @@
+2007-11-06 Igor Zelmanovich <[email protected]>
+
+	* ListControl.cs:
+	SelectedValue/SelectedIndex is set during DataBinding always. 	 
+
 2007-11-06  Marek Habersack  <[email protected]>
 
 	* DataGrid.cs: add RenderTable before the DataGridItems, so that

+ 5 - 0
mcs/class/System.Web/System.Web.UI.WebControls/ListControl.cs

@@ -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));

+ 5 - 0
mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog

@@ -1,3 +1,8 @@
+2007-11-06 Igor Zelmanovich <[email protected]>
+
+	* ListControlTest.cs:
+	Added new tests.
+
 2007-10-31 Igor Zelmanovich <[email protected]>
 
 	* DataListTest.cs:

+ 29 - 0
mcs/class/System.Web/Test/System.Web.UI.WebControls/ListControlTest.cs

@@ -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 ()
 		{