Feedback

C# - Rekursion Treeview

Veröffentlicht von am 4/1/2006
(2 Bewertungen)
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);
   }
}
Abgelegt unter Treeview, Rekursion, Tabelle.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!