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

解决方案 »

  1.   


    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);
                    }
                }        }