`
冷寒冰
  • 浏览: 243058 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

treeview 递归绑定数据库中的数据 支持web winform

阅读更多

以下是完整代码     附件中是数据表  

 

namespace treeview
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //窗体加载
        private void Form1_Load(object sender, EventArgs e)
        {
            InitGroupTree();

        }
        //得到初始化的树
       public void InitGroupTree()
        {
           
           treeView1.Nodes.Clear();

           GroupNode rootGroupNode =GetGroupNode("e1f6d5dd-941e-4300-9644-700bc96a24f4");

            TreeNode node = LoadTreeNode(rootGroupNode);

           treeView1.Nodes.Add(node);

            InitSubGroupTree(node, rootGroupNode);

            node.Expand();
        }

     
        private TreeNode LoadTreeNode(GroupNode childGroupNode)
        {

            TreeNode childNode = new TreeNode();
            childNode.Text = childGroupNode.GroupDO.GroupName;
            childNode.Tag = childGroupNode.GroupDO.GroupId.ToString();
         
            //childNode.ExpandAll();

            return childNode;
        }

        private void InitSubGroupTree(TreeNode node, GroupNode groupNode)
        {
            foreach (var childGroupNode in groupNode.ChildGroups)
            {
                TreeNode childNode = LoadTreeNode(childGroupNode);

               // node.ChildNodes.Add(childNode); web中
                node.Nodes.Add(childNode);//winform中
                InitSubGroupTree(childNode, childGroupNode);
            }
        }

        public GroupNode GetGroupNode(string groupId)
        {
            GroupDO groupDO = GetRootNodeDO(groupId);
            if (groupDO == null)
            {
                return null;
            }

            GroupNode groupNode = new GroupNode();
            groupNode.GroupDO = groupDO;//得到根节点 (最顶级节点)


            List<string> childGroupIds = GetChildGroupIds(groupId);
            foreach (string childGroupId in childGroupIds)
            {
                groupNode.ChildGroups.Add(GetGroupNode(childGroupId));
            }

            return groupNode;
        }


        /// <summary>
        /// Get the group by the group ID.
        /// </summary>
        /// <param name="groupId">The group ID.</param>
        /// <returns>The GroupDO object.</returns>
        public GroupDO GetRootNodeDO(string groupId)
        {
            string constring = "Data Source=.;Initial Catalog=CIMSystemDB;User ID=sa;password=123;";
            string sql = "SELECT [GroupId],[GroupName],[Description],[GroupMgrId],[SuperGroupId] FROM [Group] WHERE [GroupId]=@GroupId";
            SqlConnection conn = new SqlConnection(constring);

            try
            {
                SqlParameter parameters = new SqlParameter("@GroupId", groupId);
                SqlCommand cmd = new SqlCommand(sql, conn);
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = cmd;
                cmd.Parameters.Add(parameters);

                DataSet ds = new DataSet();
                da.Fill(ds);
                DataTable dataTable = ds.Tables[0];

                GroupDO groupDO = null;

                if (dataTable != null && dataTable.Rows.Count > 0)
                {
                    groupDO = new GroupDO();
                    foreach (DataRow dr in dataTable.Rows)
                    {
                        SetGroupDO(groupDO, dr);
                    }


                }

                return groupDO;
            }
            catch
            {
                MessageBox.Show("发生异常");
                return null;
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            }
        }
       public void SetGroupDO(GroupDO groupDO, DataRow dataRow)
        {
            groupDO.GroupId =dataRow["GroupID"].ToString();
            groupDO.GroupName =dataRow["GroupName"].ToString();
            groupDO.Description = dataRow["Description"].ToString();
            groupDO.GroupMgrId = dataRow["GroupMgrID"].ToString();
            groupDO.SuperGroupId =dataRow["SuperGroupID"].ToString();
        }
     

        /// <summary>
        /// Get one level child group ID list.
        /// </summary>
        /// <param name="groupId">The group ID.</param>
        /// <returns>The child group ID list.</returns>
        public static List<string> GetChildGroupIds(string groupId)
        {
            string constring = "Data Source=.;Initial Catalog=CIMSystemDB;User ID=sa;password=123;";
            SqlConnection conn=new SqlConnection(constring);
            try
            {
                string sql = "SELECT [GroupID] FROM [Group] WHERE [superGroupID]=@GroupId AND GroupID<>@GroupId AND [Actived]=1 "
                    + " ORDER BY [GroupName]";
                SqlParameter parameters = new SqlParameter("@GroupId", groupId);
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.Parameters.Add(parameters);
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = cmd;
                DataSet ds = new DataSet();
                da.Fill(ds);
                DataTable dataTable =ds.Tables[0];
             
                List<string> childGroupIds = new List<string>();

                if (dataTable != null)
                {
                    foreach (DataRow dataRow in dataTable.Rows)
                    {
                        childGroupIds.Add(dataRow["groupID"].ToString());
                    }
                }

                return childGroupIds;
            }
            catch
            {
                MessageBox.Show("发生异常");
                return null;
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            }
        }

    }
    
}

//用到的两个类文件如下:

 public class GroupDO
    {

        public string GroupId { get; set; }
        public string GroupName { get; set; }
        public string Description { get; set; }
        public string GroupMgrId { get; set; }
        public string SuperGroupId { get; set; }
    }

 

 

 

 

public  class GroupNode
    {
        public GroupDO GroupDO {get;set; }
        public List<GroupNode> ChildGroups { get; set; }
        public GroupNode()
        {
            ChildGroups = new List<GroupNode>();
        }
    }

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics