Hallo Ingo,
...
Post by Ingo LeiÃgibt es einen schnellen und effizienten Weg, um große Menge
hierarchischer Daten in einer Datenbank zu speichern um
daraus schnell einen TreeView in C# zu erzeugen?
Das mit der rekursiven Bezugsspalte klingt interessant, hast
du ein paar Infos für mich wie die Technik funktioniert?
Die allseits beliebte Northwind enthält in der Employees Tabelle
ein Beispiel.
Der oberste Manager ist da NULL und und bei dessen Mitarbeiter
verweist ReportsTo auf die EmployeeID.
Eine kleines Code-Schnippselunten dran. Wenn Du keine SQL Server
Northwind hast tuts auch die von Access (NWIND.MDB).
Gruss
Elmar
--
private void button1_Click(object sender, System.EventArgs e)
{
string connectionString = System.Configuration.ConfigurationSettings.AppSettings["SqlClient_Northwind"];
DataTable employeeTable = new DataTable("Employees");
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlDataAdapter adapter = new SqlDataAdapter(
"SELECT EmployeeID, ReportsTo, "
+ "LastName + ', ' + FirstName AS Name FROM Employees",
connection))
{
adapter.Fill(employeeTable);
}
connection.Close();
}
BuildTreeView(this.treeView1.Nodes,
employeeTable.Select("ReportsTo IS NULL"));
}
private void BuildTreeView(TreeNodeCollection nodes, DataRow[] rows)
{
foreach(DataRow row in rows)
{
TreeNode node = new TreeNode((string)row["Name"]);
nodes.Add(node);
BuildTreeView(node.Nodes,
row.Table.Select(String.Format("ReportsTo = {0}", row["EmployeeID"])));
}
}