Hallo

Danke f�r dein Beispiel. Muss mir das mal genauer anschauen. Also ich hab
mein Treeview (schematisch) etwa so aufgebaut. Hab den den genauen Code gerade
nicht zur Hand. Wenn du m�chtest kann ich ihn aber noch publizieren:

public class Node
{
//Methoden die f�r Knoten und Subtrees Sinn machen
  private string name;
  private ArrayList childNodes;
  private Node parentNode;
  
  public string GetName() { return this.name; }
  public bool IsEmpty() { return false; }
  public ArrayList GetChildNodes {}
  public ArrayList GetSubTree() { GetSubTree(new ArrayList()); }
  private ArrayList GetSubTree(ArrayList nodes) {
    nodes.add(this) {
    IEnumerator enumerator = this.GetChildNodes().GetEnumerator();
    while(enumerator.MoveNext()) {
       ((Node)enumerator.Current).GetSubTree(nodes);
    }
  }
}

public class EmptyNode()
{
//EmptyNode ist eine Art Puffer am Ende des Baumes falls keine Eltern oder
Kinderelemente vorhanden sind, wird am beim rekursiven durchlaufen keine
Exception (Object not set to instance) ausgel�st.

  public string GetName() { return ""; }
  public bool IsEmpty() { return true; }
  public ArrayList GetChildNodes {}
  public ArrayList GetSubTree(ArrayList nodes) {}
  public void AddChild(Node node) {}
}


public class Tree : Node
{
   //Methoden die nur in einem vollst�ndigen Baum Sinn machen
   public Node FindNode(Node node) {}
   public string ToHTMLString() {}
   public void FillTreeFromDataSet(DataSet ds) {}
}

Den Baum baut man dann so auf:

Tree tr = new Tree();
Node node = new Node();
tr.AddChild(node);
node.AddChild(new Node());
usw...

Man k�nnte so auch jeder Node bestimmte Objekte zuordnen: Vielleicht ist es
erw�nscht, dass eine Node auf ein DataGrid verweist, kein Problem, einfach in
der Klasse Node eine neue Klassenvariable DataGrid definieren. Bei der
Methode FillTreeFromDataSet �bergibt man einfach ein DataSet mit Tabellen und
Relationen. Die Methode erstellt dann den Baum...

Um Verbesserungsvorschl�ge & Kritik bin ich �brigens immer froh..

Den Code bitte nicht auf Fehler �berpr�fen, ich hab das auswendig kurz
hingeschrieben...

Gruss Daniel


> Hi Daniel,
> 
>  >At 13:50 06.03.2004, you wrote:
>  >Interessiert dich wie ich das Treeview aufgebaut habe? Wenn ja, ich
>  erkl�rs
>  >dir gerne.
> 
> das interessiert mich ziemlich; es k�nnte mir auch bei meinem endg�ltige
> n 
> Men�-Control (das ich jetzt vor�bergehend mit zwei verschachtelten 
> DataLists und XML-Source umgesetzt habe) weiterhelfen. Was die 
> Designtime-Unterst�tzung angeht hier mal ein kleines Beispiel:
> 
> 
>          namespace Design {
> 
>                  public class MenuDesigner : ControlDesigner {
>                          private Menu menuInstance;
> 
>                          public MenuDesigner() : base() 
> {
>                          }
> 
>                          public override void 
> Initialize(System.ComponentModel.IComponent component) {
>                                  this.menuInstance = (Menu) component;
>                                  base.Initialize (component);
>                          }
> 
>                          public override string GetDesignTimeHtml() {
>                                  StringWriter sw = new StringWriter();
>                                  HtmlTextWriter writer = new 
> HtmlTextWriter(sw);
> 
>                                  Table menu = new 
> Table();
>                                  menu.CellSpacing =
>  menuInstance.ItemSpacing;
>                                  menu.CellPadding =
>  menuInstance.ItemPadding;
> 
>                                  Hier das Layout f�r die DesignTime
>  definieren:
>                                  ...
>                                  DataTable menu;
>                                  ...
> 
> 
>                                  menu.RenderControl(writer);
>                                  return sw.ToString();
>                                  }
>                          }
>                  }
> 
> 
> Diese Klasse muss dann in etwa folgendermassen an dein Control agebunden 
> werden:
> 
>          [
>          ToolboxData("<{0}:Menu runat=server></{0}:Menu>"),
>          Designer("Design.MenuDesigner"),
>          ParseChildren(true),
>          PersistChildren(false),
>          ]
>          Public Class MyControl
>          {
>                          ....
>          }
> 
> 
> 
> 
> 
> www.zoologie-online.de
> 
> Lars Berner
> Stormcrow-Software
> Postfach: 110123
> 69071 Heidelberg
> 
> 

-- 
+++ NEU bei GMX und erstmalig in Deutschland: T�V-gepr�fter Virenschutz +++
100% Virenerkennung nach Wildlist. Infos: http://www.gmx.net/virenschutz

_______________________________________________
Asp.net Mailingliste, Postings senden an:
[EMAIL PROTECTED]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/asp.net

Antwort per Email an