如何递归创建Ttee的Node

来源:互联网 发布:2016年就业数据 编辑:程序博客网 时间:2024/06/04 19:48

   /// <summary>
        /// 创建目录树
        /// </summary>
        /// <param name="selectNode">当前目录节点,为null时表示创建根节点目录</param>
        /// <param name="iCatalogID">字典数据对象类型</param>
        private void CreateCategoriesTree(Node selectNode, int iCatalogID)
        {
            NodeCollection nodes;
            if (selectNode == null)
                nodes = trvCategories.Nodes;
            else
            {
                nodes = selectNode.Nodes;
                DataRow row = selectNode.Tag as DataRow;
            }


            nodes.Clear();
            DataTable dt = ManualDBProc.GetManualCategoriesTree(iCatalogID);
            foreach (DataRow row in dt.Rows)
            {
                Node node = new Node();
                node.Text = Tools.ToString(row["Title"]);
                node.Tag = Tools.ToInt32(row["CatalogID"]);
                nodes.Add(node);


                if (Tools.ToInt32(row["SubTitleCount"]) > 0)
                {
                    //有下级接点,加载下有节点
                    CreateCategoriesTree(node, Tools.ToInt32(row["CatalogID"]));
                    //展开结点显示
                    node.Expand();
                }
            }
        }



/// <summary>

        /// 显示目录树
        /// </summary>
        private void ShowCategoriesTree()
        { 
            if (ManualDBProc.GetManualCategoriesTreeDataTable(Tools.ToString(cmbSysName.Value), cmbDocType.SelectedIndex))
            {
                trvCategories.BeginUpdate();
                trvCategories.Nodes.Clear();
                CreateCategoriesTree(null, 0);
                trvCategories.EndUpdate();
                if (trvCategories.Nodes.Count > 0)
                {
                    //显示第一个节点
                    trvCategories.SelectedNode = trvCategories.Nodes[0];
                }
            }

        }


 private void miTitleTreeCreate_Click(object sender, EventArgs e)
        {
            FormInputDlg frm = new FormInputDlg("请输入目录名称", "");
            if (frm.ShowDialog() == DialogResult.OK)
            {
                String sNodeName = frm.GetInput();
                Node n = trvCategories.SelectedNode;
                int iParentID = 0;
                int iOrders = 0;
                if (n == null || n.Parent == null)
                {
                    iParentID = 0;
                    iOrders = trvCategories.Nodes.Count + 1;
                }
                else
                {
                    iParentID = Tools.ToInt32(n.Parent.Tag);
                    iOrders = n.LastNode.Index + 1;
                }


                int iCatalogID = 0;
                if (ManualDBProc.UpdateCategoriesTree(m_sProductID, m_iDocType, ref iCatalogID, iParentID, sNodeName, iOrders, 'A'))
                {
                    Node add = new Node();
                    add.Text = sNodeName;
                    add.Tag = iCatalogID;
                    if (n == null || n.Parent == null)
                    {
                        trvCategories.Nodes.Add(add);
                    }
                    else
                    {
                        n.Parent.Nodes.Add(add);
                    }
                    FrmMsgBolloon.ShowAlert("新建目录标题成功!");
                }
            }
        }


        private void miTitleTreeCreateSub_Click(object sender, EventArgs e)
        {
            if (trvCategories.SelectedNode == null)
                return;


            FormInputDlg frm = new FormInputDlg("请输入目录名称", "");
            if (frm.ShowDialog() == DialogResult.OK)
            {
                String sNodeName = frm.GetInput();
                Node n = trvCategories.SelectedNode;
                int iParentID = Tools.ToInt32(n.Tag);
                int iOrders = 0;
                if(n.LastNode != null)
                    iOrders = n.LastNode.Index + 1;


                int iCatalogID = 0;
                if (ManualDBProc.UpdateCategoriesTree(m_sProductID, m_iDocType, ref iCatalogID, iParentID, sNodeName, iOrders, 'A'))
                {
                    Node add = new Node();
                    add.Text = sNodeName;
                    add.Tag = iCatalogID;
                    n.Nodes.Add(add);
                    FrmMsgBolloon.ShowAlert("新建下级目录标题成功!");
                }
            }
        }

1 0
原创粉丝点击