Problems with Reload/Databind in TreeGrid with PageTreeLoader defined
Hi,
I have the following example with a TreeGrid:
Code:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="TreeGridExample.WebForm1" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<script runat="server">
public class EntityWithOrder
{
public int ID { get; set; }
public string Name { get; set; }
public int Order { get; set; }
public int MotherID { get; set; }
}
private List<EntityWithOrder> nodes = new List<EntityWithOrder>();
protected void Page_Load(object sender, EventArgs e)
{
nodes.Add(new EntityWithOrder { ID = 1, Name = "1", Order = 1, MotherID = 0 });
nodes.Add(new EntityWithOrder { ID = 2, Name = "2", Order = 1, MotherID = 1 });
nodes.Add(new EntityWithOrder { ID = 3, Name = "3", Order = 2, MotherID = 1 });
nodes.Add(new EntityWithOrder { ID = 4, Name = "4", Order = 3, MotherID = 1 });
nodes.Add(new EntityWithOrder { ID = 5, Name = "5", Order = 2, MotherID = 0 });
nodes.Add(new EntityWithOrder { ID = 6, Name = "6", Order = 1, MotherID = 5 });
nodes.Add(new EntityWithOrder { ID = 7, Name = "7", Order = 2, MotherID = 5 });
nodes.Add(new EntityWithOrder { ID = 8, Name = "8", Order = 1, MotherID = 6 });
nodes.Add(new EntityWithOrder { ID = 9, Name = "9", Order = 3, MotherID = 0 });
nodes.Add(new EntityWithOrder { ID = 10, Name = "10", Order = 1, MotherID = 9 });
nodes.Add(new EntityWithOrder { ID = 11, Name = "11", Order = 1, MotherID = 10 });
nodes.Add(new EntityWithOrder { ID = 12, Name = "12", Order = 2, MotherID = 10 });
nodes.Add(new EntityWithOrder { ID = 13, Name = "13", Order = 3, MotherID = 10 });
nodes.Add(new EntityWithOrder { ID = 14, Name = "14", Order = 1, MotherID = 12 });
nodes.Add(new EntityWithOrder { ID = 15, Name = "15", Order = 2, MotherID = 12 });
nodes.Add(new EntityWithOrder { ID = 16, Name = "16", Order = 1, MotherID = 15 });
nodes.Add(new EntityWithOrder { ID = 17, Name = "17", Order = 4, MotherID = 0 });
nodes.Add(new EntityWithOrder { ID = 18, Name = "18", Order = 1, MotherID = 17 });
nodes.Add(new EntityWithOrder { ID = 19, Name = "19", Order = 2, MotherID = 17 });
nodes.Add(new EntityWithOrder { ID = 20, Name = "20", Order = 5, MotherID = 0 });
nodes.Add(new EntityWithOrder { ID = 21, Name = "21", Order = 1, MotherID = 20 });
}
protected void LoadNode(object sender, NodeLoadEventArgs e)
{
int parsedValue = 0;
int.TryParse(e.NodeID, out parsedValue);
IList<EntityWithOrder> lst = nodes.Where(n => n.MotherID == parsedValue).ToList();
if (lst.Any())
{
List<Ext.Net.TreeNode> l = new List<Ext.Net.TreeNode>();
foreach (EntityWithOrder item in lst)
{
Ext.Net.TreeNode treeNode = new Ext.Net.TreeNode();
treeNode.IconCls = "iconeTreeGrid";
treeNode.NodeID = item.ID.ToString();
treeNode.CustomAttributes.Add(new ConfigItem { Name = "ID", Value = item.ID.ToString(), Mode = ParameterMode.Value });
treeNode.CustomAttributes.Add(new ConfigItem { Name = "Name", Value = item.Name, Mode = ParameterMode.Value });
treeNode.CustomAttributes.Add(new ConfigItem { Name = "Order", Value = item.Order.ToString(), Mode = ParameterMode.Value });
l.Add(treeNode);
}
e.Nodes.AddRange(l);
}
}
protected void ReorderTwoNodes(object sender, DirectEventArgs e)
{
var node9 = nodes.Single(n => n.ID == 9);
var node17 = nodes.Single(n => n.ID == 17);
node9.Order = 4;
node17.Order = 3;
_tree.Reload();
//_tree.DataBind();
}
</script>
<!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 runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<ext:ResourceManager runat="server" />
<ext:Button Text="Reorder" runat="server">
<DirectEvents>
<Click OnEvent="ReorderTwoNodes" />
</DirectEvents>
</ext:Button>
<ext:TreeGrid ID="_tree" runat="server" UseArrows="true" AutoWidth="true"
Height="500" noleaficon="false" EnableDD="false" RootVisible="false" EnableSort="false">
<Columns>
<ext:TreeGridColumn Header="ID" Width="230" DataIndex="ID" />
<ext:TreeGridColumn Header="Name" Width="230" DataIndex="Name" />
<ext:TreeGridColumn Header="Order" Width="230" DataIndex="Order" />
</Columns>
<Loader>
<ext:PageTreeLoader OnNodeLoad="LoadNode" />
</Loader>
</ext:TreeGrid>
</form>
</body>
</html>
I need to reposition(Reorder) some nodes according to the order, after this i need to reload the TreeGrid to take the nodes with the new nodes, but this way don't work.
How can i Re-DataBind(Reload) the TreeGrid?
Thanks in advance,