设置treeview 的treenode 的tag从表中或者从xml中

        #region 设置树节点tag从表中

        /// <summary>
        /// 读取树节点从tag表中
        /// </summary>
        /// <param name="treview">要设置的树</param>
        /// <param name="dt">从某个表中</param>
        /// <param name="IsAppend">树节点是否追加</param>
        /// <param name="ParentNumberIndex">父节点tag的表中字段的下标</param>
        /// <param name="NumberIndex">当前节点tag表中的下标</param>
        /// <param name="TextIndex">text的表中的下标</param>
        /// <returns></returns>
        public bool ReaderNodeFromTable(TreeView treview,DataTable dt, bool IsAppend, int ParentNumberIndex, int NumberIndex, int TextIndex)
        {
            try
            {
              
                if (!IsAppend)
                {
                    treview.Nodes.Clear();
                }

                DataRow[] dr;
                //当表中行大于0时候
                if (dt != null && dt.Rows.Count > 0)
                {
                    dr = dt.Select(dt.Columns[ParentNumberIndex].ColumnName + "= '' or " + dt.Columns[ParentNumberIndex].ColumnName + " is null");
                    for (int i = 0; i < dr.Length; i++)
                    {
                        TreeNode treeNode = new TreeNode(dr[i][dt.Columns[TextIndex].ColumnName].ToString());
                        treeNode.Tag = dr[i][dt.Columns[NumberIndex].ColumnName].ToString();
                        treview.Nodes.Add(treeNode);
                    }
                    //构造子节点。根据nodes
                    for (int i = 0; i < treview.Nodes.Count; i++)
                    {
                        ForTreeNodeFromDt(treview.Nodes[i], dt, ParentNumberIndex, NumberIndex, TextIndex);
                    }


                }

 

                return true;
            }
            catch
            {

                return false;
            }
        }


        /// <summary>
        /// 根据父节点tag生成每个子节点。
        /// </summary>
        /// <param name="treeNode">treeNode下标</param>
        /// <param name="dt">对应的表数据</param>
        /// <param name="ParentNumberIndex">父节点下标</param>
        /// <param name="NumberIndex">当前节点下标</param>
        /// <param name="TextIndex">当前文本</param>
        private void ForTreeNodeFromDt(TreeNode treeNode, DataTable dt, int ParentNumberIndex, int NumberIndex, int TextIndex)
        {
            //查找出当前节点的子节点
            DataRow[] dr;
            if (dt != null && dt.Rows.Count > 0)
            {
                dr=dt.Select(dt.Columns[ParentNumberIndex].ColumnName+"='"+treeNode.Tag.ToString()+"'");
                for (int i = 0; i < dr.Length; i++)
                {
                    TreeNode tn = new TreeNode(dr[i][dt.Columns[TextIndex].ColumnName].ToString());
                    tn.Tag=dr[i][dt.Columns[NumberIndex].ColumnName].ToString();
                    treeNode.Nodes.Add(tn);
              
                }
                foreach (TreeNode treenode in treeNode.Nodes)
                {
                    ForTreeNodeFromDt(treenode, dt, ParentNumberIndex, NumberIndex, TextIndex);
                }
           }
          

 

        }


        #endregion

        #region 设置树节点从xml中
        /// <summary>
        /// 设置树节点从Xml文件中
        /// </summary>
        /// <param name="treview">树</param>
        /// <param name="xmlPath">xml路径</param>
        /// <param name="dt"></param>
        /// <param name="IsAppend">是否追加</param>
        /// <param name="ParentNumberIndex">父tag</param>
        /// <param name="NumberIndex">当前tag</param>
        /// <param name="TextIndex">当前text</param>
        /// <returns></returns>
        public bool ReaderNodeFromXml(TreeView treview, string xmlPath, bool IsAppend, int ParentNumberIndex, int NumberIndex, int TextIndex)
        {
            if (System.IO.File.Exists(xmlPath) == true)
            {
                try
                {
                    DataSet ds = new DataSet();
                    ds.ReadXml(xmlPath);
                    ReaderNodeFromTable(treview, ds.Tables[0], IsAppend, ParentNumberIndex, NumberIndex, TextIndex);
                    return true;
                }
                catch
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
          
        }

        #endregion

posted @ 2011-05-25 07:31  风云8  阅读(1313)  评论(0)    收藏  举报