Browse Source

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

	* TreeNode.cs: fixed: 
	when 'Value' property is not set, value of 'Text' property is used 
	instead and vice versa.

	* TreeNodeTest.cs:
	* TreeViewTest.cs:
	new tests were added.	


svn path=/trunk/mcs/; revision=76782
Igor Zelmanovich 18 years ago
parent
commit
aa20dc91b4

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

@@ -1,3 +1,9 @@
+2007-05-06 Igor Zelmanovich <[email protected]>
+
+	* TreeNode.cs: fixed: 
+	when 'Value' property is not set, value of 'Text' property is used 
+	instead and vice versa.
+
 2007-05-04  Marek Habersack  <[email protected]>
 
 	* AdRotator.cs: use the new GetPhysicalFilePath method to look up

+ 32 - 38
mcs/class/System.Web/System.Web.UI.WebControls/TreeNode.cs

@@ -317,8 +317,10 @@ namespace System.Web.UI.WebControls
 		public string Text {
 			get {
 				object o = ViewState ["Text"];
+				if (o == null)
+					o = ViewState ["Value"];
 				if (o != null) return (string)o;
-				return "";
+				return String.Empty;
 			}
 			set {
 				ViewState ["Text"] = value;
@@ -343,8 +345,10 @@ namespace System.Web.UI.WebControls
 		public string Value {
 			get {
 				object o = ViewState ["Value"];
+				if (o == null)
+					o = ViewState ["Text"];
 				if(o != null) return (string)o;
-				return "";
+				return String.Empty;
 			}
 			set {
 				ViewState ["Value"] = value;
@@ -651,24 +655,20 @@ namespace System.Web.UI.WebControls
 					Target = bin.Target;
 					
 				// Bind Text property
-					
+				string text = null;
 				if (bin.TextField.Length > 0) {
-					Text = Convert.ToString (GetBoundPropertyValue (bin.TextField));
+					text = Convert.ToString (GetBoundPropertyValue (bin.TextField));
 					if (bin.FormatString.Length > 0)
-						Text = string.Format (bin.FormatString, Text);
-					if (Text.Length == 0)
-						Text = bin.Text;
-					if (Text.Length == 0)
-						Text = bin.Value;
-					if (Text.Length == 0 && bin.ValueField.Length > 0)
-						Text = Convert.ToString (GetBoundPropertyValue (bin.ValueField));
+						text = string.Format (bin.FormatString, text);
 				}
-				else if (bin.Text.Length > 0)
-					Text = bin.Text;
-				else if (bin.Value.Length > 0)
-					Text = bin.Value;
-				else
-					Text = GetDefaultBoundText ();
+				if (String.IsNullOrEmpty (text)) {
+					if (bin.Text.Length > 0)
+						text = bin.Text;
+					else if (bin.Value.Length > 0)
+						text = bin.Value;
+				}
+				if (!String.IsNullOrEmpty (text))
+					Text = text;
 					
 				// Bind ToolTip property
 
@@ -681,35 +681,29 @@ namespace System.Web.UI.WebControls
 					ToolTip = bin.ToolTip;
 					
 				// Bind Value property
-
+				string value = null;
 				if (bin.ValueField.Length > 0) {
-					Value = Convert.ToString (GetBoundPropertyValue (bin.ValueField));
-					if (Value.Length == 0)
-						Value = bin.Value;
-					if (Value.Length == 0)
-						Value = bin.Text;
-					if(Value.Length == 0 && bin.TextField.Length > 0)
-						Value = Convert.ToString (GetBoundPropertyValue (bin.TextField));
+					value = Convert.ToString (GetBoundPropertyValue (bin.ValueField));
 				}
-				else if (bin.Value.Length > 0)
-					Value = bin.Value;
-				else if (bin.Text.Length > 0)
-					Value = bin.Text;
-				else if (Text.Length > 0)
-					Value = Text;
-				else
-					Value = GetDefaultBoundText ();
-			} else {
+				if (String.IsNullOrEmpty (value)) {
+					if (bin.Value.Length > 0)
+						value = bin.Value;
+					else if (bin.Text.Length > 0)
+						value = bin.Text;
+				}
+				if (!String.IsNullOrEmpty (value))
+					Value = value;
+			}
+			else {
 				Text = Value = GetDefaultBoundText ();
 			}
 
 			INavigateUIData navigateUIData = hierarchyData as INavigateUIData;
 			if (navigateUIData != null) {
+				SelectAction = TreeNodeSelectAction.None;
 				Text = navigateUIData.ToString ();
-				string url = navigateUIData.NavigateUrl;
-				NavigateUrl = url;
-				if (String.IsNullOrEmpty (url))
-					SelectAction = TreeNodeSelectAction.None;
+				NavigateUrl = navigateUIData.NavigateUrl;
+				ToolTip = navigateUIData.Description;
 			}
 		}
 		

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

@@ -1,3 +1,9 @@
+2007-05-06 Igor Zelmanovich <[email protected]>
+
+	* TreeNodeTest.cs:
+	* TreeViewTest.cs:
+	new tests were added.	
+
 2007-05-03  Marek Habersack  <[email protected]>
 
 	* TreeViewTest.cs: revert r76541.

+ 24 - 0
mcs/class/System.Web/Test/System.Web.UI.WebControls/TreeNodeTest.cs

@@ -241,6 +241,30 @@ namespace MonoTests.System.Web.UI.WebControls {
 			node.ToggleExpandState ();
 			Assert.AreEqual (false, node.Expanded, "TreeNode_ToggleExpandState#3");
 		}
+
+		[Test]
+		public void TreeNode_TextValue1 ()
+		{
+			TreeNode node = new TreeNode ();
+			node.Text = "TTT";
+			Assert.AreEqual ("TTT", node.Value, "TreeNode_TextValue1#1");
+			node.Value = "";
+			Assert.AreEqual ("", node.Value, "TreeNode_TextValue1#2");
+			node.Value = null;
+			Assert.AreEqual ("TTT", node.Value, "TreeNode_TextValue1#3");
+		}
+
+		[Test]
+		public void TreeNode_TextValue2 ()
+		{
+			TreeNode node = new TreeNode ();
+			node.Value = "VVV";
+			Assert.AreEqual ("VVV", node.Text, "TreeNode_TextValue2#1");
+			node.Text = "";
+			Assert.AreEqual ("", node.Text, "TreeNode_TextValue2#2");
+			node.Text = null;
+			Assert.AreEqual ("VVV", node.Text, "TreeNode_TextValue2#3");
+		}
 	}
 }
 

+ 6 - 0
mcs/class/System.Web/Test/System.Web.UI.WebControls/TreeViewTest.cs

@@ -486,6 +486,12 @@ namespace MonoTests.System.Web.UI.WebControls {
 
 			Assert.AreEqual ("value#default", m.Nodes[0].ChildNodes[9].Text, "CheckTreeNodes_Extra5#1");
 			Assert.AreEqual ("value#extra5", m.Nodes[0].ChildNodes[9].Value, "CheckTreeNodes_Extra5#2");
+
+			m.Nodes [0].ChildNodes [5].Text = "TTT";
+			Assert.AreEqual ("TTT", m.Nodes [0].ChildNodes [5].Value, "");
+			
+			m.Nodes [0].ChildNodes [6].Value = "VVV";
+			Assert.AreEqual ("VVV", m.Nodes [0].ChildNodes [6].Text, "");
 		}
 
 		void SetDataBindings (TreeView tv) {