Jun 04, 2009, 9:28 AM
Retrieve treepanel's root after reload
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
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 && !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>