Problema con l'oggetto asp:treeview

venerdì 15 luglio 2011 - 16.57
Tag Elenco Tags  VB.NET  |  .NET 3.5

zseven Profilo | Senior Member

Ciao ragazzi,
sto utilizzando per la prima l'oggetto treeview, e sto riscontrando un pò di problemi nel fare un'operazione.
Il codice è il seguente:

<asp:TreeView ID="TreeView1" runat="server" DataSourceID="SiteMapDataSource1" ExpandDepth="0" NodeIndent="10" ImageSet="Simple2" PopulateNodesFromClient="false" > <NodeStyle CssClass="link_categorie" /> <SelectedNodeStyle CssClass="link_sottocategorie" /> </asp:TreeView> <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="false" StartingNodeUrl="/categorie.aspx"/>

e così funziona, però non riesco a fare in modo che al click su di un nodo, quando viene aperta la pagina di destinazione, non mi apre i nodi figlio facendo così capire in quale nodo ho cliccato.

Sapete aiutarmi?
Grazie mille

Gluck74 Profilo | Guru

vorrei capire una cosa,
come viene aperta la pagina di destinazione? fai un postback completo? la apri nella stessa finestra? in un frame? come?
usi il treeview in una masterpage e le pagine sono le content?


____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

zseven Profilo | Senior Member

Ciao,
la pagina di destinazione viene caricata ex novo sì, perchè legge il valore dell'url dal sitemap.
E' un normalissimo link senza masterpage, l'unica cosa è che il treeview sta in uno usercontrol.

Grazie

Gluck74 Profilo | Guru

quindi ogni pagina ha questo controllo?


____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

zseven Profilo | Senior Member

sì esatto

Gluck74 Profilo | Guru

mi sa che sono rogne.
Non puoi proprio fare una masterpage?

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

zseven Profilo | Senior Member

è addirittura così difficile?

Guarda le masterpage non le ho mai utilizzate, addirittura risulta più semplice con loro? Credevo si complicasse il discorso...

Nel caso mio io avevo provato a recuperare all'evento Onselectednodechanched il valore del nodo selezionato e metterlo in una variabile di sessione.
Ma purtroppo non memorizza niente.
Ho sbagliato io qualcosa o è un'operazione che non posso fare?

Gluck74 Profilo | Guru

ASP.NET mantiene lo stato dei controlli se il postback avviene sulla stessa pagina. Con alcuni accorgimenti puoi farlo anche da una pagina all'altra, ma è sicuramente un metodo non "standard" per ASP.NET.
Anche perché tu vedi sempre il treeview perché lo hai messo in tutte le pagine, ma in teoria non è mai lo stesso.
Se hai "pagina_A" con il treeview e, cliccando su di esso ti sposti in "pagina_B", in verità il treeview che vedi non è quello che ha generato il postback, quindi non puoi agire sui suoi eventi e sulle sue proprietà.
Dovresti attivare il il postback tra pagine e andarti a prendere i valori che cerchi da "PreviosuPage".

Doversamente dovresti mantenere il postBack sulla stessa pagine (togli quindi il navigatinUrl dal treeview), e sull'evento del del treeview capire quale nodo è stato cliccato (operazione semplice), e fare un redirect sulla pagina voluta. Ma non è un'operazione molto pulita poiché in questo modo si caricano e si eseguono 2 pagine.

cosa molto più semplice è invece usare le masterpage. Leggiti qualcosa a riguardo e vedrai che è semplicissimo usarle.

Ciao

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5