TreeView控件操作开发篇之(四)

阅读更多
读取树节点从DataTable
 #region 读取树节点从DataTable

        /// 
        ///读取树节点从DataTable 
        /// 
        /// TreeView控件
        /// 要读取的DataTable
        /// 是否追加
        /// 父节点编号名称字段的索引
        /// 当前节点编号名称字段的索引
        /// 当前节点Text名称字段的索引
        /// 
        public bool ReadNodeFromDataTable(TreeView Tv, DataTable Dt, bool IsAppend, int ParentColumnIndex, int CurrColumnIndex, int CurrNameColumnIndex)
        {
            try
            {
                if (!IsAppend)
                {
                    Tv.Nodes.Clear();
                }

                if (Dt != null && Dt.Rows.Count > 0)
                {
                    DataRow[] Dr = null;
                    //找出所有的父节点编号为空或null的记录,也就是所有的父节点
                    Dr = Dt.Select(Dt.Columns[ParentColumnIndex].ColumnName + "=''or " + Dt.Columns[ParentColumnIndex].ColumnName + " is null");
                    //遍历父节点
                    for (int i = 0; i < Dr.Length; i++)
                    {
                        TreeNode pNode = new TreeNode(Dr[i][Dt.Columns[CurrNameColumnIndex].ColumnName].ToString());
                        pNode.Tag = Dr[i][Dt.Columns[CurrColumnIndex].ColumnName].ToString();//当前节点编号保存到节点的tag属性中
                        Tv.Nodes.Add(pNode);
                    }
                    for (int i = 0; i < Tv.Nodes.Count; i++)
                    {
                        forReadNodeFromDataTable(Tv.Nodes[i], Dt, ParentColumnIndex, CurrColumnIndex, CurrNameColumnIndex);
                    }
                    return true;
                }
                else
                {
                    return false;
                }
            }
            catch 
            {
                return false;
            }
        }

        /// 
        /// 从DataTable中递归遍历树节点
        /// 
        /// 树节点
        /// DataTable
        /// 父节点编号名称字段的索引
        /// 当前节点编号名称字段的索引
        /// 当前节点Text名称字段的索引
        private void forReadNodeFromDataTable(TreeNode Node,DataTable Dt,int ParentColumnIndex,int CurrColumnIndex,int CurrNameColumnIndex)
        {
            DataRow[] Dr = null;
            string tempTag = Node.Tag.ToString();//取出当前节点编号
            Dr = Dt.Select(Dt.Columns[ParentColumnIndex].ColumnName + "='" + tempTag + "'");//得到当前节点下的所有子节点
            for (int i = 0; i < Dr.Length; i++)
            {
                TreeNode cNode = new TreeNode(Dr[i][Dt.Columns[CurrNameColumnIndex].ColumnName].ToString());
                cNode.Tag = Dr[i][Dt.Columns[CurrColumnIndex].ColumnName].ToString();
                Node.Nodes.Add(cNode);
            }
            foreach (TreeNode aNode in Node.Nodes)
            {
                forReadNodeFromDataTable(aNode, Dt, ParentColumnIndex, CurrColumnIndex, CurrNameColumnIndex);
            }

        }


        #endregion
  • TreeView控件操作开发篇之(四)_第1张图片
  • 大小: 17.1 KB
  • 查看图片附件

你可能感兴趣的:(treeview,tag)