+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
void PerformDataBinding (IEnumerable dataSource)
{
if (dataSource == null)
+#if NET_2_0
+ goto setselected;
+#else
return;
+#endif
#if NET_2_0
if (!AppendDataBoundItems)
#endif
}
#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));
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 ()
{