【问题标题】:I can't add child to parent nodes.. :(我无法将子节点添加到父节点.. :(
【发布时间】:2017-12-29 13:11:22
【问题描述】:

我想获取数据库架构并将其全部列在 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;
                }
            }

请点击这里查看输出

【问题讨论】:

    标签: c# sql treeview schema


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的帮助.. 我使用该代码,但它给了我一个 System.NullReferenceException 这是我得到该错误的代码。 tViewUpdatedSchema.Nodes[tempTblName].Nodes.Add(string.Format("{0}={1}", dt_col.ColumnName, dt_row[dt_col]).ToString());
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-20
    • 2020-08-25
    • 2020-12-18
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多