Retrieve treepanel's root after reload

Hi,
I am using treepanel and reload function in my application,
so i took solution in these post: http://forums.ext.net/showthread.php...eepanel+reload

Now, I need to retrieve all of the tree (root, child, grandchild, etc) after reload.
But I dont know how to do that.
I've tried some code as below, but it didn't work



<%@ Page Language="C#" %>

<%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head2" runat="server">
    <title></title>
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack &amp;&amp; !Ext.IsAjaxRequest)
            {
                this.BuildTree(TreePanel1.Root);
            }
        }
        
        private Coolite.Ext.Web.TreeNodeCollection BuildTree(Coolite.Ext.Web.TreeNodeCollection nodes)
        {
            if(nodes == null)
            {
                nodes = new Coolite.Ext.Web.TreeNodeCollection();
            }
            
            Coolite.Ext.Web.TreeNode root = new Coolite.Ext.Web.TreeNode();
            root.Text = "Root";
            nodes.Add(root);

            string prefix = DateTime.Now.Second + "_";
            for (int i = 0; i < 10; i++)
            {
                Coolite.Ext.Web.TreeNode node = new Coolite.Ext.Web.TreeNode();
                node.Text = prefix + i;
                root.Nodes.Add(node);
            }

            return nodes;
        }

        [AjaxMethod]
        public string RefreshMenu()
        {
            Coolite.Ext.Web.TreeNodeCollection nodes = this.BuildTree(null);
            return nodes.ToJson();
        }

        [AjaxMethod]
        public void RetrieveTree() 
        {
            // Getting ROOT
            Coolite.Ext.Web.TreeNodeCollection rootCollection = TreePanel1.Root;
            Coolite.Ext.Web.TreeNode root = (Coolite.Ext.Web.TreeNode)rootCollection[0]; // error in here ..

            // Getting first node
            Coolite.Ext.Web.TreeNodeCollection nodes = root.Nodes;
            Coolite.Ext.Web.TreeNode firstNode = (Coolite.Ext.Web.TreeNode)nodes[0];
            TextField1.Text = firstNode.Text;
        }
    </script>
    
    <script type="text/javascript">
        function refreshTree(tree) {
            Coolite.AjaxMethods.RefreshMenu({
                success: function(result) {
                    var nodes = eval(result);
                    tree.root.ui.remove();
                    tree.initChildren(nodes);
                    tree.root.render();
                }
            });
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <ext:ScriptManager ID="ScriptManager1" runat="server">
    </ext:ScriptManager>
    
        <ext:TreePanel ID="TreePanel1" runat="server" 
            Icon="Anchor" 
            BodyBorder="false" 
            Title="Tree"
            AutoScroll="true" 
            Width="250" 
            Collapsed="False" 
            CollapseFirst="True" 
            HideParent="False"
            RootVisible="False" 
            BodyStyle="padding-left:10px">
            
          <Tools>            
           <ext:Tool Type="Refresh" Qtip="Refresh" Handler="refreshTree(#{TreePanel1});" />
          </Tools>
          <TopBar>
            <ext:Toolbar runat="server">
                <Items>
                    <ext:ToolbarButton runat="server" ID="btnRetrieve" Text="Retrieve">
                        <Listeners>
                            <Click Handler="Coolite.AjaxMethods.RetrieveTree()" />
                        </Listeners>
                    </ext:ToolbarButton>
                </Items>
            </ext:Toolbar>
          </TopBar>
         </ext:TreePanel>
         <ext:TextField ID="TextField1" runat="server" FieldLabel="First Node's Text">
        </ext:TextField>
    </form>
</body>
</html>