C#递归方法把数据表加载到treeview控件(C/S和B/S)

来源:互联网 发布:网络推广成功案例 编辑:程序博客网 时间:2024/04/27 15:09

C#递归方法把数据表加载到treeview控件(bsCS方法都有),先看一下数据库的结构:

 

表结构如下所示:

Num                   Name                                 fatherNum       BZ

01                      总节点                                      0              ......

0101                   第一个一级节点                          01             ......

010101               第一个一级节点的第一个支节点       0101         ......

010102               第一个一级节点的第二个支节点       0101         ......

010103               第一个一级节点的第三个支节点       0101         ......

0102                   第二个一级节点                          01             ......

010201               第二个一级节点的第一个支节点       0102         ......

0103                   第三个一级节点                          01             ......

010301               第三个一级节点的第一个支节点       0103         ......

01030101           第三个一级节点的第一个支节点       010301      ......

 

使用递归方法 把数据表加载到treeview,

怎样根据treeview上的某个节点知道它在数据库表上对应的主键值?

这是递归方法

 

C/S:

 

 

  private void openButton_Click(object sender, System.EventArgs e)
        {
          
this.treeView1.Nodes.Clear();

            SDesktopClient cli = new SDesktopClient("EndPoint_WsText");//调用wcf中的方法得到数据
            DataSet ds = cli.GetCompany();//得到查询的dataset数据集
            DataView  dvTree = new DataView(ds.Tables[0]);
            AddTree(0, (TreeNode)null,dvTree);

        }

    public void AddTree(int ParentID, TreeNode pNode,DataView d)
        {
            TreeNode tn1 = new TreeNode();
            DataView dvTree = d;
            //过滤ParentID,得到当前的所有子节点
            dvTree.RowFilter = "[Area_Parent_ID] = " + ParentID;
            foreach (DataRowView Row in dvTree)
            {
                if (pNode == null)
                {    //添加根节点
                    tn1.Text = Row["Area_Name"].ToString();
                    tn1.Tag = Row["id"].ToString();
                    treeView1.Nodes.Add(tn1);
                    tn1.Expand();
                    //  tn1.IsExpanded = true;
                    AddTree(Int32.Parse(Row["id"].ToString()), tn1,dvTree);    //再次递归
                }
                else
                {   //添加当前节点的子节点
                    TreeNode tn2 = new TreeNode();
                    tn2.Text = Row["Area_Name"].ToString();
                    tn2.Tag = Row["id"].ToString();

                    // tn2.ShowCheckBox = true;
                    pNode.Nodes.Add(tn2);
                    tn1.Expand();
                    // tn1.IsExpanded = true;
                    AddTree(Int32.Parse(Row["id"].ToString()), tn2,dvTree);    //再次递归
                }

            }
        }

B/S方法如下:

 

 

    protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)
    {

        DataSet ds = new DataSet();
        DBUtility.SqlHelper sql = new DBUtility.SqlHelper();
        string treeSql = "";
        if (RadioButtonList1.SelectedValue.Equals("0"))//以部门选择可以阅读人员
        {
            this.CheckBoxList1.Visible = false;
            this.TreeView1.Visible = true;
            treeSql = "select *  from Department";
            ds = sql.ExecuteQuery(System.Configuration.ConfigurationManager.ConnectionStrings["DB"].ConnectionString, CommandType.Text, treeSql.ToString(), null);得到查询的dataset数据集
            DataView dvTree = new DataView(ds.Tables[0]);
            this.ViewState["ds"] = ds;
            this.TreeView1.Nodes.Clear();
             AddTree(0, (TreeNode)null);
        }

    //递归添加树的节点 参数ParentID为树的最大父结点
    public void AddTree(int ParentID, TreeNode pNode)
    {
        DataSet ds = (DataSet)this.ViewState["ds"];
        DataView dvTree = new DataView(ds.Tables[0]);
        //过滤ParentID,得到当前的所有子节点 ParentID为父节点ID
        dvTree.RowFilter = "[parentDept] = " + ParentID;

        //循环递归
        foreach (DataRowView Row in dvTree)
        {
            //声明节点
            TreeNode Node = new TreeNode();
            ////绑定超级链接
            //Node.NavigateUrl = "List.aspx?Item_ID=" + Row["Item_ID"].ToString();
            //开始递归
            if (pNode == null)
            {
                //添加根节点
                Node.Text = Row["DeptName"].ToString();
                Node.Value = Row["ID"].ToString();
                TreeView1.Nodes.Add(Node);
                //Node.Expanded = true; //节点状态展开
                AddTree(Int32.Parse(Row["ID"].ToString()), Node);    //再次递归
            }
            else
            {
                //添加当前节点的子节点
                Node.Text = Row["DeptName"].ToString();
                Node.Value = Row["ID"].ToString();
                pNode.ChildNodes.Add(Node);
                //pNode.Nodes.Add(Node);
                //Node.Expanded = true; //节点状态展开
                AddTree(Int32.Parse(Row["ID"].ToString()), Node);     //再次递归
            }
        }

    }

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 彩票站买彩票把钱付了没出票怎么办 与异性朋友聊天没话题了怎么办 快递写错地址但已经发货了怎么办 快递写错电话但已经发货了怎么办 微信添加好友功能被限制怎么办 qq号被冻结了限制解封怎么办 被别人强制拉入qq群怎么办 qq群里的图片过期了怎么办 q附近人不能关注不能发信息怎么办 qq畅聊之火掉了怎么办 打印机打印时上面空白留太多怎么办 发短信一直空格里面写0怎么办 网贷获取我新手机号通讯录怎么办 系统音频驱动异常或未安装怎么办 附近功能已屏蔽你的qq好友怎么办 新申请的qq号忘了怎么办 刚申请的qq号忘了怎么办 以前申请的qq号忘了怎么办 小孩玩手机游戏扣费了怎么办 手机qq好友头像显示不出来怎么办 qq的一些重要数据被清理怎么办 华为p9微信听筒声音小怎么办 win10我的电脑图标没了怎么办 小米5x里的微信头像不清楚怎么办 微信头像换了总是模糊怎么办 找到老公暧昧对象的微信怎么办 朋友欠我钱一直拖找借口怎么办 陌陌附近的人不按距离排序怎么办 老婆一直要管我的钱怎么办 老公不肯把钱交给老婆管怎么办 愿意和做朋友不愿意做情侣怎么办 欠信用卡碰到第三方不愿协调怎么办 qq密码忘记了申诉不回来怎么办 当你老公烦你了你该怎么办 自己有漂亮媳妇还经常想去嫖怎么办 微信号封了找不到好友解封怎么办 别人总是提起你的黑历史怎么办 换了手机微信登录不上怎么办 qq不小心清空了聊天记录怎么办 人家介绍了外地媳妇跑了怎么办 火锅想吃香菜牛肉没有签子串怎么办