Treeview auf einer Tabelle aufgebaut
/* Grundlage: Tabellenaufbau
* int Kategorie_NR *
* string Kategorie_Name
* int Oberkategorie
*/
private void Baum_Zeichen()
{
/* Daten aus der Datenbank holen */
System.Data.Oledb.Connection DB = new Connection;
string TB_Name = "kategorien" ;
string SQL = "SELECT * FROM " + TB_Name;
DataBaseConnection.myDB.myDB_Command SQL_cmd = new DataBaseConnection.myDB.myDB_Command(SQL, DB);
DataBaseConnection.myDB.myDB_DataAdapter DA = new DataBaseConnection.myDB.myDB_DataAdapter(SQL_cmd);
System.Data.DataSet DS = new System.Data.DataSet();
DA.Fill(DS,TB_Name);
SQL_cmd.Dispose();
/* Treeview löschen, da es neu aufgebaut wird*/
trv_Baum_Kategorien.Nodes.Clear();
/* den ersten Filter setzen, auf alle Hauptnodes */
System.Data.DataView DV = new System.Data.DataView(DS.Tables[TB_Name1]);
DV.RowFilter = "Oberkategorie is null";
/* Prüfung ob es überhaupt Nodes gibt */
if(DV.Count == 0) return;
/* für den Fall das es nur einen rootNode gibt
* sonst ist hier eine Schleife erforderlich
*/
TreeNode Nod = new TreeNode(DV[0]["Kategorie_Name"].ToString());
Nod.ImageIndex = 0; //Bild setzen
Nod.Tag = (int)DV[0]["Kategorie_NR"]; //ID speichert
/* Rekursivier Aufruf */
Baum_Vertiefen( Nod, DS, TB_Name);
/* Nodes dem Treeview übergeben */
trv_Baum_Kategorien.Nodes.Add(Nod);
/* 1. Konten öffnen */
Nod.Expand();
}
private void Baum_Vertiefen(TreeNode nod_B, System.Data.DataSet DS, string TB_Name)
{
/* Neuen Filter anlegen */
System.Data.DataView DV = new System.Data.DataView(DS.Tables[TB_Name]);
DV.RowFilter = "Oberkategorie = " + nod_B.Tag.ToString();
/* Durchlauf von allen gefunden Positionen */
for (int k=0;k<DV.Count;k++)
{
/* Neue Nodes anlegen */
TreeNode Neues_Nod = new TreeNode(DV[k]["Kategorie_Name"].ToString());
Neues_Nod.Tag = (int)DV[k]["Kategorie_NR"];
/* jedes Node die Unternodes durch erneuten aufruf
* an hängen */
Baum_Vertiefen( Neues_Nod, DS, TB_Name);
/* Node dem Obernode anhängen */
nod_B.Nodes.Add(Neues_Nod);
}
}
Kommentare zum Snippet