+ -
当前位置:首页 → 问答吧 → 无限级别读取子节点,或下级多子节点无限读取解决方案

无限级别读取子节点,或下级多子节点无限读取解决方案

时间:2011-12-19

来源:互联网

看了有问这个的,刚才自己也在做,就帖一个分享下,希望我的case能够适用于您
因为公司机密问题,部分方法已经被删除,备注很详细,数据层换成自己的,就行了

C# code

private void GetSourceID(string id)
        {
           //获取当前用户是否存在接点人,如果存在,获取接点人编号,然后计算该接点人相关分红,再次循环调用此方法
            m.Uid = id;
            SuperiorID = core.GetSuperiorID(m);//当前接点人ID
            if (SuperiorID != id)//判断其接点人是否达到上限,此处设定为木有达到,将继续循环调用该方法{默认设置当前用户和当前用户的接点人的编号为同一个人时,当前用户为最高接点人}
            {
                ////存在接点人,判断两者间的权限

                    //获取接点人用户的级别
                    SuperiorLevel =core.GetUserLevel(SuperiorID);
                    
                    //储存接点人ID,待下次循环使用
                    id = SuperiorID;

                   //{这里你已经获得当前的新ID}
                //利用获得的当前接点人ID去循环读取其是否还有上级接点人存在
                    GetSourceID(id);
             }
        }





BD
id 用户ID 上级节点人ID 推荐人ID
86 100000 100000 100000
79 100001 100000 100000
79 100005 100000 100000
79 100006 100000 100000
81 100002 100001 100000
83 100003 100002 100002
85 100004 100003 100002
79 100007 100002 100000
79 100007 100007 100000

作者: xuan0709   发布时间: 2011-12-19

这个用递归查询可以搞定

作者: ssp2009   发布时间: 2011-12-19

C# code

protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                m.FatherID = Request.QueryString.Get("id");
                System.Data.DataSet Ds = r.GetChild(m);
                IList<Model> model = new List<Model>
                {
                };
                model.Add(new Model { ParentId = m.FatherID, ChildId = m.FatherID, UserName = m.FatherID });
                GetChilds(Ds, model, m.FatherID);
                ListTable = model as List<Model>;
           }

            //Response.Write(Str);
        }
        private string temp;
        private void GetChilds(System.Data.DataSet Ds, IList<Model> model, string key)
        {
            for (int i = 0; i < Ds.Tables[0].Rows.Count; i++)
            {
                temp = Ds.Tables[0].Rows[i][1].ToString();
                if (temp != key)
                {
                    model.Add(new Model { ParentId = Ds.Tables[0].Rows[i][0].ToString(), ChildId = Ds.Tables[0].Rows[i][1].ToString(), UserName = Ds.Tables[0].Rows[i][2].ToString() });
                    m.FatherID = temp;
                    System.Data.DataSet Dst = r.GetChild(m);
                    GetChilds(Dst, model, temp);
                }
            }

        }



作者: xuan0709   发布时间: 2011-12-19

下面的才是
上面的给错了
哪是读一级的 下往上读的

作者: xuan0709   发布时间: 2011-12-19

相关阅读 更多

热门下载

更多