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