我想获取数据库模式并在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;
}
}
请点击此处查看输出
答案 0 :(得分:0)
您的代码在添加父节点和子节点时都添加了根级节点。
您需要先添加父节点,然后通过索引或键检索它,并将子项添加到此节点而不是树视图,例如:
treeView1.Nodes.Add("key","new Node");
treeView1.Nodes[0].Nodes.Add("Sub Node 1");
treeView1.Nodes["key"].Nodes.Add("Sub Node 2");