如何使用数据库中的递归数据创建分层树结构

时间:2016-11-30 20:10:09

标签: c# wpf recursion hierarchical-trees

我想使用button_click事件

使用数据库中的递归数据填充分层树结构

我在表格中有以下记录。

bomItem          partId
500101            100200
500101            500100
500101            100280
500100            320255

I want to show Tree as shown below
   500101
     +----100200
     +----500100
           +----300255
     +----100280

//注意:bomItem是父级,partId是子级字段

我遇到的问题:

  1. 导航到下一条记录时,保留了前一条记录的树形结构,我希望在导航到另一条记录时清除树形视图。

  2. 要显示完整的树结构,我必须填充孩子的第一个

  3. 这是我使用的代码

    //按钮点击事件

    private void button4_Click(object sender, EventArgs e)
            {
    
                _command = new SqlCommand("SELECT * FROM [BOMDETAIL] where bomItem= '" + int.Parse(bomItemTextBox.Text) + "' and bomRev= '" + bomRevComboBox.Text + "'", _connection);
                _adapter = new SqlDataAdapter(_command);
                _adapter.Fill(objdataset);
                _connection.Close(); 
    
                try
                {
                    TreeNode node = new TreeNode(bomItemTextBox.Text);
    
                    filltree(node, int.Parse(bomItemTextBox.Text), objdataset);
    
                    treeView2.Nodes.Add(node);
    
                    //dataGridView1.DataSource = objdataset.Tables[0];
                }
                catch (Exception c)
                {
    
                    MessageBox.Show(c.ToString());
                }
            }
    

    //文件树()

     private void filltree(TreeNode parentnode, int parentid, DataSet dataset)
    
            {
    
                // Fill Tree Function to poplulate treeeview control
    
                String str = null;
                try
                {
    
    
                    foreach (DataRow row in dataset.Tables[0].Rows)
                    {
                        if (Convert.ToInt32(row["bomItem"]) == parentid)
                        {
                            str = row["partId"].ToString();
                            TreeNode new_parent_node = parentnode.Nodes.Add(str);
                            int parent_id = Convert.ToInt32(row["partId"]);
                            filltree(new_parent_node, parent_id, dataset);
                        }
    
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
    

    Image describing problem No 1

0 个答案:

没有答案