Hallo,
ich habe ein paar Probleme mit dem TreeView Element von MS.
dazu mache ich
TreeView1.Nodes.Remove(node);
DataBind();
Leider ist danach mein Node immernoch im Tree.
Ich dachte mit dem erneuten binden würde es verschwinden.
Wie bekomme ich das Node weg? (hab schon nach sowas wie TreeView.Reload gesucht...... gibt es aber leider nicht. Das Node hat auch keine childs oder so.
Ich habe aber nichts anderes gefunden, ausser mytree.SelectedNode, um das geklickte node zu bekommen.
protected void mytree_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
{
TreeView mytree = (TreeView)sender;
TreeNode parent = mytree.SelectedNode;
..........
Meine Nodes haben alle: TreeNodeSelectAction.SelectExpand;
Wie kann ich das Problem lösen? Weil es echt blöd ist, wenn nichts passiert bei einem klick auf das pluszeichen.
Hoffe jmd kann mir helfen.
THX
Gruss
Chris06
zu 1.:
Also ich hab grad das hier ausprobiert:
private void button1_Click(object sender, System.EventArgs e)
{
tcTreeView1.Nodes.Remove( tcTreeView1.SelectedNode );
}
und es funktioniert einwandfrei, vielleicht liegt der Fehler woanders!
zu2.
Mach das ganze doch mit dem BeforeExpand Event und dann kommst du über e.Node an die Node die geklickt wurde!
Ach und unter GUI-Technologien wäre das Thema besser aufgehoben!
Original von Muphin
Ach und unter GUI-Technologien wäre das Thema besser aufgehoben!
Nein, laut dem Beitrag von Chris06 geht es hier um das Webforms Treeview Control....
Original von Muphin
zu2.
Mach das ganze doch mit dem BeforeExpand Event und dann kommst du über e.Node an die Node die geklickt wurde!
Hi,
standardmäßig gibt es das Event nicht im TreeView.
Ich muss erst die assembly system.windows.forms einbinden.
Das habe ich gemacht und den Event hinzugefügt.
Daraufhin bringt er folgenden Fehler:
Fehler 1 TreeView ist ein mehrdeutiger Verweis zwischen System.Web.UI.WebControls.TreeView und System.Windows.Forms.TreeView. H:\My Documents\Visual Studio 2005\WebSites\Masterpage\App_Code\ZusatzTree.cs 71 12 H:...\Masterpage\
Wenn ich vor das TreeView jetzt System.Windows.Forms schreibe kommt der Fehler noch viel häufiger...???
Ich hatte angenommen du nimmst das TreeView von Forms und nicht das der Webforms deshalb auch das falsches Kommtar am Ende meines letzten Beitrages für das mich .Kai ja netterweiße verbessert hat!
Schmeiß die system.windows.forms wieder raus und schau mal ob du durch die TreeNodeEventArgs nicht auch durch e.Node oder was ähnliches an die Node rankommst bei der du auf das + geklickt hast!
kann ich nicht irgendwie mein TreeView diesen Event vom System.Windows.Forms Tree erben lassen oder sowas???
Also Problem 2 ist gelöst.
Nur das löschen geht noch nicht.
private void Zusatzanzahl(TreeNode parent)
{
SortedList list = new SortedList();
list = getProblemstoCategories(parent);
string anz = list.Count.ToString();
parent.Text += " (" + anz + ")";
if (parent.ChildNodes.Count > 0)
{
foreach (TreeNode child in parent.ChildNodes)
{
Zusatzanzahl(child);
}
}
if (anz == "0")
{
TreeView1.Nodes.Remove(parent);
DataBind();
}
}
ich übergebe der Funktiion beim start einen Ast meines Tree´s.
Dort wird für jeden knoten gezählt, wieviel Zuordnungen zu dem Knoten bestehen.
Wenn diese 0 sind, soll der Knoten entfernt werden.
Wäre es möglich, dass der TreeNode den ich dort lösche, nur eine übergebene kopie des Nodes ist?
Original von typhos
Lass doch einfach mal das DataBind() weg...
Macht keinen Unterschied.....
Versehe die Funktionsparamter doch mal mit nem "ref" wenns dann funktioniert wars wohl nur ne Kopie!
Also der Aufruf
Zusatzanzahl(ref node);
bringt nen Fehler.
Meinstest du an dieser Stelle? ansonsten hab ich nichts geändert.