Jeg kan faktisk godt finde ud af at finde niveau 1 og 2 MEN den fejler hver gang i niveau 3..... med følgende: "Index was out of range. Must be non-negative and less than the size of the collection."
Jeg kan ikke hitte ud af, hvad problemet er i min kode?
Koden: try { string nodetext = "Kontakt os";
for (int i = 0; i < MenuTree.Nodes.Count; i++) { TreeNode headnode = MenuTree.Nodes[i];
Men den fejler ved din metode og siger følgende: The type or namespace name 'node' could not be found (are you missing a using directive or an assembly reference?)
Hvilken using directive mangler jeg? (jeg bruger VS2008) og ikke mindst - hvordan henter jeg returværdien ud?.
Har jeg ret, hvis jeg læser din metode til kun at hente 2 niveauer ud og ikke 3, som er det, der er mit problem?
Jeg er ked af det - lige nu forsøger jeg kun at sætte din static classe ind i en cs (klasse fil) der i forvejen har flere static classes.....og den fejler med ikke mindre end 14 ting - jeg tager de to første:
1) Type expected (som er ved første linie (this) keywordet) 2) Identifier expected, 'string' is a keyword (som er ved første linie (string) keywordet)
Jeg har de samme using direktiver stående. Jeg forsøgte så også at kopiere klassen ind i samme fil og får samme fejl?
Kan vi starte forfra - for jeg har en anden metode (som er hentet fra nettet af og som ER rekursiv.....) Problemet er stadig mit 3. niveau. Hvis jeg bruger metoden og søger på 1. eller 2. niveau - ekspander den pænt derhen hvor den nu skal være...Men forsøger jeg at finde en på 3. niveau, ekspander den ingenting - jeg kan dog se at den vælger den korrekte (har lagt node id'et ud i en label inde i metoden). Kan du fortælle mig, hvad fejlen er på den 3. niveau?
Jeg ER forvirret - jeg har slettet alt - undtaget i min pageload at hente menuen ind.....
Nu har jeg så tilføjet din static klasse og får stadig fejlene som beskrevet først i 10:21:32 - altså det er som om den ikke vil finde noget som helst - er det pga. frameworket?
Du skriver at jeg skal bruge metoden på TreeView - hvor henne mener du?
ahh ok... .NET 2.0 har ikke extensions... det ENESTE using direktiv min kode kræver er "System.Web.UI.WebControls;" her får du metoderne, som rekursive (non-extensions):
Den metode du lige har posted er IKKE rekursiv !
brug disse metoder:
public static void FindAndSelect(TreeView TV, string SearchText) { TV.CollapseAll();
foreach (TreeNode node in TV.Nodes) { FindNode(node, SearchText); } }
public static void FindNode(TreeNode node, string SearchText) { if (node.Text == SearchText) ExpandUpwards(node); else foreach (TreeNode sub in node.ChildNodes) { FindNode(sub, SearchText); } }
public static void ExpandUpwards(TreeNode node) { node.Expand();
if (node.Parent != null) ExpandUpwards(node.Parent); }
Jeg ER dum - jeg ved jo godt hvordan jeg binder den til mit treeview *lyserødmer*
Og jeg kunne altså kysse dig (og ja ja jeg ER kvinde)........din kode virker bare perfekt......
Rigtig mange tak for hjælpen - jeg har knoklet rundt med det her i snart 3 uger og forsøgt mig med mindst 50 forskellige ting, jeg har fundet på nettet....... Så du har gjort mig MEGET glad :-)
en lille ting man skal have bag øret er, at TreeView ikke kaster en event hvis man trykker på den samme node 2 gange i træk... man skal/bør derfor de-select noden igen, efter man har behandlet trykket i eventhandleren...
public static void FindNode(TreeNode node, string SearchText) { if (node.Text == SearchText) ExpandUpwards(node); else
-->
public static void FindNode(TreeNode node, string SearchText) { if (node.Text == SearchText){ node.Select(); ExpandUpwards(node); }else
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.