12. juli 2008 - 14:25Der er
11 kommentarer og 1 løsning
Treeview - find bestemt node fortsat
Hej,
Jeg havde problemer med at expande et treeview, som jeg i dag har fået hjælp til.... Jeg har dog fundet en detalje, som er ret vigtig, som ikke er med..... Den selecter ikke den node, jeg har valgt, men top noden istedet.
Vil jeg så have fat i Underkategori 1.2, kører jeg nedenfor viste kode - men den selecter altså Kategori 1.
Hvordan skal jeg få den til også at selecte og ikke kun ekspande 1.2?
Koden som den ser ud nu: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { //16-06-2008 AS //Get the top menu try { DALMenu menu = new DALMenu(); if (menu.EditGetTopMenu(MenuTree) == Status.Success) { //Henter submenus for (int i = 0; i < MenuTree.Nodes.Count; i++) { TreeNode headnode = MenuTree.Nodes[i];
Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
Du snakker russisk nu *flov* Jeg har indtil nu kunnet se, når jeg har lavet alt det andet på min label, at den er ændret hver gang. Med din kode, får jeg overnoden i label'en. Det jeg ikke forstår. Det er som om, hvis jeg søger på en på niveau, så kommer den rigtige i lablen men hvis jeg søger på en af de underliggende niveauer, henter den overnoden til den jeg søger på.....håber du forstår mig.
Og når du nu skriver sådan til mig......så KUNNE jeg jo selvfølgelig forsøge at skrive id ud i lablen i en af dine metoder istedet for......troede bare den pr. automatik også gik in i TreeNodeExpanded metoden......
Vender lige frygtelig tilbage, når jeg har checket det :-)
Jeg aner altså ikke hvilket namespace den så skal under, for der står ikke noget i filen - du får lige al koden her:
using System; using System.Collections; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts;
public partial class Test_TestMenu : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { //16-06-2008 AS //Get the top menu try { DALMenu menu = new DALMenu(); if (menu.EditGetTopMenu(MenuTree) == Status.Success) { //Henter submenus for (int i = 0; i < MenuTree.Nodes.Count; i++) { TreeNode headnode = MenuTree.Nodes[i];
Jeg bliver desværre nødt til at smutte et par timer....skulle have været afsted for en halv time siden, så kan ikke trække den længere.....kommer på senere i dag.
Håber du fortsat gider hjælpe mig med den her. Lærer da hele tiden noget nyt med din hjælp :-)
NodeFoundEvent evt = new NodeFoundEvent(); evt.node = node;
hvorefter du kan putte evt, ind i --> NodeFound(this, evt);
//-----------------
beklager at det hele er så avanceret, men når du lige har fået styr på det. har du lært lidt om at bruge events, som kan blive meget nyttige i fremtiden ! :-)
jeg beklager også at jeg bruger .NET 3.5 kode... det er blevet en vane efterhånden :-)
du kan også ændre alle steder hvor der står "_Default" til "_Test_TestMenu"
det er min klasse som hedder Default :-)
læg mærke til at NodeFoundEvent er en Klasse som jeg har oprettet. Denne indeholder en property af typen TreeNode, som du læser fra, efter eventet er sket.
///
for hulan da... .NET 3.5: public class NodeFoundEvent : EventArgs{ public TreeNode node { get; set; } }
.NET 2.0:
public class NodeFoundEvent : EventArgs { TreeNode _node; public TreeNode node { get{return _node} set{_node = value} } }
denne klasse kan eventuelt flyttes udenfor Test_TestMenu klassen INDEN du genopretter din eventhandler...
Og ja, er selv støt på et par steder med beskrivelser, der ville gøre min hverdag nemmere, hvis vi gik over til 3.5 frameworket (f.eks. get/set at jeg ikke skal lave en intern variabel (3.5 gør det bagved for mig) - for selv den dag i dag forstår jeg ikke hvorfor jeg skal lave sådan en variabel.....) Men desværre må jeg ikke gå over til framework 3.5 endnu.....
Nu vil jeg gerne forstå (ja, jeg er stadig kvinde og netop derfor), hvad det er jeg har lavet - så jeg forsøger lige at forklare og ikke mindst spørge:
I pageload går jeg ind og overskriver (er det overskrivning eller tilføjelse til den eksisterende?) den eksisterende nodefound event med en ny event, jeg så laver i:
I ovennævnte kunne jeg så lave forskellige ting, der så kommer til handling, hver gang der er fundet en ny node.
Her opretter jeg en ny instans af min eventhandling: public class NodeFoundEvent : EventArgs { TreeNode _node; public TreeNode node { get{return _node;} set { _node = value; } } }
MEN så kommer det - hvad er den her til???????
public event EventHandler<NodeFoundEvent> NodeFound;
Du får dine velfortjente points, men håber du gider give tilkende om jeg har forstået det korrekt og forklare mig hvad den sidste er til
blabla.EventNavn += new EventHandler<type>(metode);
er tilmeldingen
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.