как отображать данные MLM в виде дерева в asp.net - PullRequest
1 голос
/ 10 июня 2019

Образец данных MLM

У меня есть многоуровневые маркетинговые данные, в которых человек может присоединиться ко многим другим, и снова присоединяющийся человек сделает то же самое.

У меня естьпопробовал этот код

     protected void load_data()
         {

        strQuery = "select * from redjoining where id=995";
        cmd = new SqlCommand(strQuery);
        dt = dbcon.GetData(cmd);

        string cat_code = dt.Rows[0]["id"].ToString();
        string cat_name = dt.Rows[0]["userName"].ToString();

        TreeNode parent = new TreeNode();
        parent.Value = cat_code;
        parent.Text = cat_name;
        TreeView1.Nodes.Add(parent);
        add_childs(parent, cat_code);

    }

сейчас, чтобы добавить дочерний узел, я использую этот код, но он добавляет только верхнюю единственную запись.

  protected void add_childs(TreeNode tn, string category_code) 
  {

        strQuery = "select * from redjoining where sponserid=@category_code";
        cmd = new SqlCommand(strQuery);
        cmd.Parameters.AddWithValue("@category_code", category_code);
        dt = dbcon.GetData(cmd);

        for (int i = 0; i < dt.Rows.Count; i++)
        {
            string cat_code = dt.Rows[0]["id"].ToString();
            string cat_name = dt.Rows[0]["userName"].ToString();

            TreeNode child = new TreeNode();
            child.Value = cat_code;
            child.Text = cat_name;
            tn.ChildNodes.Add(child);

            add_childs(child, cat_code); //calling the same function
        }
    }

1 Ответ

0 голосов
/ 10 июня 2019

В вашем методе есть проблема, чтобы добавить дочерние записи в древовидную структуру, проверьте код ниже

protected void add_childs(TreeNode tn, string category_code) 
  {

        strQuery = "select * from redjoining where sponserid=@category_code";
        cmd = new SqlCommand(strQuery);
        cmd.Parameters.AddWithValue("@category_code", category_code);
        dt = dbcon.GetData(cmd);

        for (int i = 0; i < dt.Rows.Count; i++)
        {
            string cat_code = dt.Rows[i]["id"].ToString();
            string cat_name = dt.Rows[i]["userName"].ToString();

            TreeNode child = new TreeNode();
            child.Value = cat_code;
            child.Text = cat_name;
            tn.ChildNodes.Add(child);

            add_childs(child, cat_code); //calling the same function
        }
    }

В вашем коде вы всегда используете dt.Rows[0]["id"].ToString()

используйте i как ваш dt естьнесколько записей, и вы перебираете цикл.

Надеюсь, это поможет.

...