Author: igorz
Date: 2007-02-28 11:08:25 -0500 (Wed, 28 Feb 2007)
New Revision: 73564
Modified:
trunk/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
trunk/mcs/class/System.Web/System.Web.UI.WebControls/TreeNodeCollection.cs
trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog
trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/TreeNodeCollectionTest.cs
Log:
2007-02-28 Igor Zelmanovich <[EMAIL PROTECTED]>
* TreeNodeCollection.cs:
fixed Save/Load viewstate.
Modified: trunk/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
===================================================================
--- trunk/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
2007-02-28 15:54:45 UTC (rev 73563)
+++ trunk/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
2007-02-28 16:08:25 UTC (rev 73564)
@@ -1,5 +1,10 @@
2007-02-28 Igor Zelmanovich <[EMAIL PROTECTED]>
+ * TreeNodeCollection.cs:
+ fixed Save/Load viewstate.
+
+2007-02-28 Igor Zelmanovich <[EMAIL PROTECTED]>
+
* MenuItemCollection.cs:
fixed Save/Load viewstate.
Modified:
trunk/mcs/class/System.Web/System.Web.UI.WebControls/TreeNodeCollection.cs
===================================================================
--- trunk/mcs/class/System.Web/System.Web.UI.WebControls/TreeNodeCollection.cs
2007-02-28 15:54:45 UTC (rev 73563)
+++ trunk/mcs/class/System.Web/System.Web.UI.WebControls/TreeNodeCollection.cs
2007-02-28 16:08:25 UTC (rev 73564)
@@ -87,8 +87,7 @@
child.Tree = tree;
if (marked) {
((IStateManager)child).TrackViewState ();
- child.SetDirty ();
- dirty = true;
+ SetDirty ();
}
}
@@ -102,8 +101,7 @@
((TreeNode)items[n]).Index = n;
if (marked) {
((IStateManager)child).TrackViewState ();
- child.SetDirty ();
- dirty = true;
+ SetDirty ();
}
}
@@ -155,7 +153,7 @@
if (tree != null)
node.Tree = null;
if (marked) {
- dirty = true;
+ SetDirty ();
}
}
@@ -166,7 +164,7 @@
if (tree != null)
node.Tree = null;
if (marked) {
- dirty = true;
+ SetDirty ();
}
}
@@ -194,20 +192,26 @@
dirty = (bool)its [0];
- if (dirty)
+ if (dirty) {
items.Clear ();
- for (int n=1; n<its.Length; n++) {
- Pair pair = (Pair) its [n];
- int oi = (int) pair.First;
- TreeNode node;
- if (oi != -1)
- node = (TreeNode) items [oi];
- else
- node = new TreeNode ();
- if (dirty) Add (node);
- ((IStateManager)node).LoadViewState
(pair.Second);
+ for (int n = 1; n < its.Length; n++) {
+ TreeNode item = new TreeNode ();
+ Add (item);
+ object ns = its [n];
+ if (ns != null)
+ ((IStateManager)
item).LoadViewState (ns);
+ }
}
+ else {
+ for (int n = 1; n < its.Length; n++) {
+ Pair pair = (Pair) its [n];
+ int oi = (int) pair.First;
+ TreeNode node = (TreeNode) items [oi];
+ ((IStateManager) node).LoadViewState
(pair.Second);
+ }
+ }
+
}
object IStateManager.SaveViewState ()
@@ -216,13 +220,15 @@
bool hasData = false;
if (dirty) {
- state = new object [items.Count + 1];
- state [0] = true;
- for (int n=0; n<items.Count; n++) {
- TreeNode node = items[n] as TreeNode;
- object ns =
((IStateManager)node).SaveViewState ();
- if (ns != null) hasData = true;
- state [n + 1] = new Pair (-1, ns);
+ if (items.Count > 0) {
+ hasData = true;
+ state = new object [items.Count + 1];
+ state [0] = true;
+ for (int n = 0; n < items.Count; n++) {
+ TreeNode node = items [n] as
TreeNode;
+ object ns = ((IStateManager)
node).SaveViewState ();
+ state [n + 1] = ns;
+ }
}
} else {
ArrayList list = new ArrayList ();
Modified: trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog
===================================================================
--- trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog
2007-02-28 15:54:45 UTC (rev 73563)
+++ trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog
2007-02-28 16:08:25 UTC (rev 73564)
@@ -1,5 +1,9 @@
2007-02-28 Igor Zelmanovich <[EMAIL PROTECTED]>
+ * TreeNodeColectionTest.cs: new tests
+
+2007-02-28 Igor Zelmanovich <[EMAIL PROTECTED]>
+
* MenuTest.cs: new tests
2007-02-20 Gert Driesen <[EMAIL PROTECTED]>
Modified:
trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/TreeNodeCollectionTest.cs
===================================================================
---
trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/TreeNodeCollectionTest.cs
2007-02-28 15:54:45 UTC (rev 73563)
+++
trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/TreeNodeCollectionTest.cs
2007-02-28 16:08:25 UTC (rev 73564)
@@ -247,6 +247,146 @@
R.ChildNodes.Add (N2);
tv.Nodes.Add (R);
}
+ [Test]
+ public void ViewState1 ()
+ {
+ TreeView m = new TreeView ();
+ fillTree (m);
+
+ ((IStateManager) m.Nodes).TrackViewState ();
+ m.Nodes [0].Text = "root";
+ m.Nodes [0].ChildNodes [0].Text = "node";
+ m.Nodes [0].ChildNodes [0].ChildNodes [0].Text =
"subnode";
+ object state = ((IStateManager) m.Nodes).SaveViewState
();
+
+ TreeView copy = new TreeView ();
+ fillTree (copy);
+ ((IStateManager) copy.Nodes).TrackViewState ();
+ ((IStateManager) copy.Nodes).LoadViewState (state);
+
+ Assert.AreEqual (1, copy.Nodes.Count);
+ Assert.AreEqual (2, copy.Nodes [0].ChildNodes.Count);
+ Assert.AreEqual (1, copy.Nodes [0].ChildNodes
[0].ChildNodes.Count);
+
+ Assert.AreEqual ("root", copy.Nodes [0].Text);
+ Assert.AreEqual ("node", copy.Nodes [0].ChildNodes
[0].Text);
+ Assert.AreEqual ("subnode", copy.Nodes [0].ChildNodes
[0].ChildNodes [0].Text);
+ }
+
+ [Test]
+ public void ViewState2 ()
+ {
+ TreeView m = new TreeView ();
+ fillTree (m);
+
+ ((IStateManager) m.Nodes).TrackViewState ();
+ m.Nodes [0].Text = "root";
+ m.Nodes [0].ChildNodes [0].Text = "node";
+ m.Nodes [0].ChildNodes [0].ChildNodes [0].Text =
"subnode";
+ m.Nodes.Add (new TreeNode ("root 2"));
+ object state = ((IStateManager) m.Nodes).SaveViewState
();
+
+ TreeView copy = new TreeView ();
+ fillTree (copy);
+ ((IStateManager) copy.Nodes).TrackViewState ();
+ ((IStateManager) copy.Nodes).LoadViewState (state);
+
+ Assert.AreEqual (2, copy.Nodes.Count);
+ Assert.AreEqual (2, copy.Nodes [0].ChildNodes.Count);
+ Assert.AreEqual (1, copy.Nodes [0].ChildNodes
[0].ChildNodes.Count);
+
+ Assert.AreEqual ("root", copy.Nodes [0].Text);
+ Assert.AreEqual ("node", copy.Nodes [0].ChildNodes
[0].Text);
+ Assert.AreEqual ("subnode", copy.Nodes [0].ChildNodes
[0].ChildNodes [0].Text);
+ Assert.AreEqual ("root 2", copy.Nodes [1].Text);
+ }
+
+ [Test]
+ public void ViewState3 ()
+ {
+ TreeView m = new TreeView ();
+ fillTree (m);
+ m.Nodes.Add (new TreeNode ("root 2"));
+
+ ((IStateManager) m.Nodes).TrackViewState ();
+ m.Nodes [0].Text = "root";
+ m.Nodes [0].ChildNodes [0].Text = "node";
+ m.Nodes [0].ChildNodes [0].ChildNodes [0].Text =
"subnode";
+ m.Nodes.RemoveAt (1);
+ object state = ((IStateManager) m.Nodes).SaveViewState
();
+
+ TreeView copy = new TreeView ();
+ fillTree (copy);
+ copy.Nodes.Add (new TreeNode ("root 2"));
+ ((IStateManager) copy.Nodes).TrackViewState ();
+ ((IStateManager) copy.Nodes).LoadViewState (state);
+
+ Assert.AreEqual (1, copy.Nodes.Count);
+ Assert.AreEqual (2, copy.Nodes [0].ChildNodes.Count);
+ Assert.AreEqual (1, copy.Nodes [0].ChildNodes
[0].ChildNodes.Count);
+
+ Assert.AreEqual ("root", copy.Nodes [0].Text);
+ Assert.AreEqual ("node", copy.Nodes [0].ChildNodes
[0].Text);
+ Assert.AreEqual ("subnode", copy.Nodes [0].ChildNodes
[0].ChildNodes [0].Text);
+ }
+
+ [Test]
+ public void ViewState4 ()
+ {
+ TreeView m = new TreeView ();
+ fillTree (m);
+ m.Nodes.Add (new TreeNode ("root 2"));
+ m.Nodes [0].ChildNodes.RemoveAt (1);
+
+ ((IStateManager) m.Nodes).TrackViewState ();
+ m.Nodes [0].Text = "root";
+ m.Nodes [0].ChildNodes [0].Text = "node";
+ m.Nodes [0].ChildNodes [0].ChildNodes [0].Text =
"subnode";
+ object state = ((IStateManager) m.Nodes).SaveViewState
();
+
+ TreeView copy = new TreeView ();
+ fillTree (copy);
+ copy.Nodes.Add (new TreeNode ("root 2"));
+ copy.Nodes [0].ChildNodes.RemoveAt (1);
+ ((IStateManager) copy.Nodes).TrackViewState ();
+ ((IStateManager) copy.Nodes).LoadViewState (state);
+
+ Assert.AreEqual (2, copy.Nodes.Count);
+ Assert.AreEqual (1, copy.Nodes [0].ChildNodes.Count);
+ Assert.AreEqual (1, copy.Nodes [0].ChildNodes
[0].ChildNodes.Count);
+
+ Assert.AreEqual ("root", copy.Nodes [0].Text);
+ Assert.AreEqual ("node", copy.Nodes [0].ChildNodes
[0].Text);
+ Assert.AreEqual ("subnode", copy.Nodes [0].ChildNodes
[0].ChildNodes [0].Text);
+ }
+
+ [Test]
+ public void ViewState5 ()
+ {
+ TreeView m = new TreeView ();
+ ((IStateManager) m.Nodes).TrackViewState ();
+ fillTree (m);
+
+ object state = ((IStateManager) m.Nodes).SaveViewState
();
+
+ TreeView copy = new TreeView ();
+ ((IStateManager) copy.Nodes).TrackViewState ();
+ ((IStateManager) copy.Nodes).LoadViewState (state);
+
+ Assert.AreEqual (1, copy.Nodes.Count);
+ Assert.AreEqual (2, copy.Nodes [0].ChildNodes.Count);
+ Assert.AreEqual (1, copy.Nodes [0].ChildNodes
[0].ChildNodes.Count);
+ }
+
+ private static void fillTree (TreeView tv)
+ {
+ tv.Nodes.Clear ();
+ tv.Nodes.Add (new TreeNode ());
+ tv.Nodes [0].ChildNodes.Add (new TreeNode ());
+ tv.Nodes [0].ChildNodes.Add (new TreeNode ());
+ tv.Nodes [0].ChildNodes [0].ChildNodes.Add (new
TreeNode ());
+ }
+
}
}
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches