Having problems with the order that the nodes are inserted in the TreeGrid

  1. #1

    Having problems with the order that the nodes are inserted in the TreeGrid

    Hi,

    I'm having problems with TreeGrid because i trying to Bind a ordered list in the TreeGrid, but the result go out unordered, below i show de the example:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="TreeGridExample.WebForm1" %>
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    <script runat="server">
        private List<TreeGridExample.EntityWithOrder> nodes = new List<TreeGridExample.EntityWithOrder>();
    
        protected void Page_Load(object sender, EventArgs e)
        {
            nodes.Add(new TreeGridExample.EntityWithOrder { ID = 1, Name = "1", Order = 1, MotherID = 0 });
            nodes.Add(new TreeGridExample.EntityWithOrder { ID = 2, Name = "2", Order = 1, MotherID = 1 });
            nodes.Add(new TreeGridExample.EntityWithOrder { ID = 3, Name = "3", Order = 2, MotherID = 1 });
            nodes.Add(new TreeGridExample.EntityWithOrder { ID = 4, Name = "4", Order = 3, MotherID = 1 });
            
            nodes.Add(new TreeGridExample.EntityWithOrder { ID = 5, Name = "5", Order = 2, MotherID = 0 });
            nodes.Add(new TreeGridExample.EntityWithOrder { ID = 6, Name = "6", Order = 1, MotherID = 5 });
            nodes.Add(new TreeGridExample.EntityWithOrder { ID = 7, Name = "7", Order = 2, MotherID = 5 });
            nodes.Add(new TreeGridExample.EntityWithOrder { ID = 8, Name = "8", Order = 1, MotherID = 6 });
            
            nodes.Add(new TreeGridExample.EntityWithOrder { ID = 9, Name = "9", Order = 3, MotherID = 0 });
            nodes.Add(new TreeGridExample.EntityWithOrder { ID = 10, Name = "10", Order = 1, MotherID = 9 });
            nodes.Add(new TreeGridExample.EntityWithOrder { ID = 11, Name = "11", Order = 1, MotherID = 10 });
            nodes.Add(new TreeGridExample.EntityWithOrder { ID = 12, Name = "12", Order = 2, MotherID = 10 });
            nodes.Add(new TreeGridExample.EntityWithOrder { ID = 13, Name = "13", Order = 3, MotherID = 10 });
            nodes.Add(new TreeGridExample.EntityWithOrder { ID = 14, Name = "14", Order = 1, MotherID = 12 });
            nodes.Add(new TreeGridExample.EntityWithOrder { ID = 15, Name = "15", Order = 2, MotherID = 12 });
            nodes.Add(new TreeGridExample.EntityWithOrder { ID = 16, Name = "16", Order = 1, MotherID = 15 });
    
            nodes.Add(new TreeGridExample.EntityWithOrder { ID = 17, Name = "17", Order = 4, MotherID = 0 });
            nodes.Add(new TreeGridExample.EntityWithOrder { ID = 18, Name = "18", Order = 1, MotherID = 17 });
            nodes.Add(new TreeGridExample.EntityWithOrder { ID = 19, Name = "19", Order = 2, MotherID = 17 });
    
            nodes.Add(new TreeGridExample.EntityWithOrder { ID = 20, Name = "20", Order = 5, MotherID = 0 });
            nodes.Add(new TreeGridExample.EntityWithOrder { ID = 21, Name = "21", Order = 1, MotherID = 20 });
        }
        
        protected void CarregaNo(object sender, NodeLoadEventArgs e)
        {
            int parsedValue = 0;
            int.TryParse(e.NodeID, out parsedValue);
    
            IList<TreeGridExample.EntityWithOrder> lst = nodes.Where(n => n.MotherID == parsedValue).ToList();
    
            if (lst.Any())
            {
                List<Ext.Net.TreeNode> l = new List<Ext.Net.TreeNode>();
    
                foreach (TreeGridExample.EntityWithOrder item in lst)
                {
                    Ext.Net.TreeNode treeNode = new Ext.Net.TreeNode();
    
                    treeNode.IconCls = "iconeTreeGrid";
                    treeNode.NodeID = item.ID.ToString();
                    treeNode.Leaf = false;
                    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);
            }
        }
    </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:TreeGrid ID="_treeLocalidades" runat="server" UseArrows="true" AutoWidth="true"
            Height="500" noleaficon="false" EnableDD="false" RootVisible="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="CarregaNo" />
            </Loader>
        </ext:TreeGrid>
        </form>
    </body>
    </html>
    I insert the nodes in the right order, and i wanted then to be his way...

    Thanks in advance,
  2. #2
    Hi,

    Please provide the sample which can be run locally
  3. #3
    Sorry, i forgot to put the following class EntityWithOrder:

    
    <%@ 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 CarregaNo(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.Leaf = false;
                    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);
            }
        }
    </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:TreeGrid ID="_treeLocalidades" runat="server" UseArrows="true" AutoWidth="true"
            Height="500" noleaficon="false" EnableDD="false" RootVisible="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="CarregaNo" />
            </Loader>
        </ext:TreeGrid>
        </form>
    </body>
    </html>
    More info: asp.net 4.0, using Ext.Net


    Thanks in advance,
  4. #4
    Hi,

    You can set EnableSort="false" for TreeGrid or use Raw mode for id for correct sorting by id (integer sort instead string)
    new ConfigItem { Name = "ID", Value = item.ID.ToString(), Mode = ParameterMode.Raw }
  5. #5
    Thanks,

    With first option this works great, but i want sort asc or desc.
    With second option i got the following error: Runtime error of Microsoft JScript: 'undefined' is null or don't is an object.

    So, i need more things on code for the second option works?

    Thanks in advance,
  6. #6
    If your ID is int then should not be that problem, atleast it works fine in your posted sample
  7. #7
    Ah, I remember that preview version has some bugs in the tree grid sorter. In this case (if you use preview) then you need to want upcoming RC
  8. #8

    Thanks

    Thanks,

    Thank a lot for the fast reply.

    Indeed, i really use the preview version!
    I'll soon be buying the RC version!

    Again, thank you!

Similar Threads

  1. Custom TreeGrid nodes ?
    By Mohammad in forum 1.x Help
    Replies: 18
    Last Post: Aug 22, 2012, 9:49 AM
  2. Blocking load child nodes with dbclick of treegrid row
    By Thiago Nogueira in forum 1.x Help
    Replies: 1
    Last Post: Nov 29, 2010, 12:42 PM
  3. [CLOSED] Access TreeGrid nodes from DirectEvent handler
    By jmcantrell in forum 1.x Legacy Premium Help
    Replies: 13
    Last Post: Jun 28, 2010, 6:35 PM
  4. [CLOSED] TreeGrid example on examples.ext.net does not show any nodes
    By jmcantrell in forum 1.x Legacy Premium Help
    Replies: 7
    Last Post: May 24, 2010, 4:44 PM
  5. [CLOSED] [1.0] Setting Cls property on nodes with TreeGrid
    By tdracz in forum 1.x Legacy Premium Help
    Replies: 2
    Last Post: Jan 15, 2010, 1:23 PM

Posting Permissions