我无法将子节点添加到父节点.. :(

时间:2017-07-24 03:43:25

标签: c# sql treeview schema

我想获取数据库模式并在Treeview中列出所有模式。父节点是数据库中的表名,子节点是表的属性。问题是代码没有将子节点添加到其父节点。输出可以在代码下面看到。谢谢。

public List<string> GetTableSchema(string conString, List<string> tblNames)
            {
                using (SqlConnection connection = new SqlConnection(conString))
                {
                    connection.Open();
                    DataTable schema = connection.GetSchema("Tables");
                    connection.Close();
                    foreach (DataRow row in schema.Rows)
                    {
                        tblNames.Add(row[2].ToString());
                        foreach (var list in tblNames)
                        {
                            connection.Open();
                            string query = "SELECT * FROM" + " " + list;
                            cmd = new SqlCommand(query, connection);
                            dr = cmd.ExecuteReader();
                            dt = dr.GetSchemaTable();
                            connection.Close();

                            foreach (DataRow dt_row in dt.Rows)
                            {
                                ## This Code is to add parent nodes ##
                                tViewUpdatedSchema.Nodes.Add(row[2].ToString());
                                foreach (DataColumn dt_col in dt.Columns)
                                {
                                    ## This Code is to add child to parent nodes ##
                                    tViewUpdatedSchema.Nodes.Add(string.Format("{0}={1}", dt_col.ColumnName, dt_row[dt_col]).ToString());
                                }
                            }
                        }
                    }
                    return tblNames;
                }
            }

请点击此处查看输出 image

1 个答案:

答案 0 :(得分:0)

您的代码在添加父节点和子节点时都添加了根级节点。

您需要先添加父节点,然后通过索引或键检索它,并将子项添加到此节点而不是树视图,例如:

treeView1.Nodes.Add("key","new Node");            
treeView1.Nodes[0].Nodes.Add("Sub Node 1");
treeView1.Nodes["key"].Nodes.Add("Sub Node 2");