public void DrawTree(TreeListNode ParentNode)
        {
            //string ParentValue = ParentNode == null ?
            //    (string)TreeList.RootValue : (string)((object[])ParentNode.Tag)[0];
            string ParentValue = ParentNode == null ?
                                 (string)TreeList.RootValue : ((MyNode)ParentNode.Tag).KeyField;

            IList <object> ListEntity =
                Dp.FastLoadEntities(Td.ClassType, null,
                                    string.Join(",", Columns), string.Concat(
                                        TreeList.ParentFieldName, "=",
                                        Dp.FormatSqlValue(ParentValue)), OrderField);

            //if (ParentNode != null) ((object[])ParentNode.Tag)[1] = true;
            if (ParentNode != null)
            {
                ((MyNode)ParentNode.Tag).IsLoad = true;
            }

            if (ListEntity == null || ListEntity.Count == 0)
            {
                if (ParentNode != null)
                {
                    ParentNode.HasChildren = false;
                }
                return;
            }
            object[] NodeValue = new object[Columns.Length - 1];
            TreeList.BeginUnboundLoad();
            try
            {
                foreach (object Entity in ListEntity)
                {
                    for (int i = 1; i < Columns.Length; i++)
                    {
                        NodeValue[i - 1] = Td.GetFieldDef(Columns[i])
                                           .GetValue(Entity);
                    }
                    TreeListNode Node = TreeList.AppendNode(NodeValue, ParentNode);
                    MyNode       nd   = new MyNode(Node,
                                                   (string)Td.GetFieldDef(Columns[0])
                                                   .GetValue(Entity));
                    Node.Tag = nd;

                    //Node.Tag = new object[2] {
                    //    Td.GetFieldDef(Columns[0]).GetValue(Entity), false };

                    if (onAfterAddNode != null)
                    {
                        onAfterAddNode(Node, Entity);
                    }
                }
            }
            finally
            {
                TreeList.EndUnboundLoad();
            }
        }