Ciao a tutti.
Ho creato un webusercontrol contenente un TreeView. Questo controllo viene utilizzato su diverse pagine create tutte da una masterpage.

Ogni volta che clicco su una voce del treeview, vorrei che si scatenasse un evento javascript "onclick" e questo avviene, ma subito dopo ho un postback di tutta la pagina e questo non è il comportamento che voglio.
Ho provato ad inserire il treeview all'interno di un updatepanel, ma nulla da fare.
Stessa cosa se uso l'updatepanel nella content page, inserendoci il mio controllo.

Come posso fare?

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="mycontrol.ascx.cs" Inherits="mycontrol" %>

<asp:TreeView ID="tv" runat="server" 
    onselectednodechanged="tv_SelectedNodeChanged" PathSeparator="§" ClientIDMode="Static" onclick="javascript:TreeViewSelectedItem(event);">
</asp:TreeView>    
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
restituisci false all'onclick, così inibisci il postback.
onclick="javascript:TreeViewSelectedItem(event); return false;"

Tuttavia, vedo che stai gestendo l'evento selectednodechanged. Se inibisci il postback, questo evento non verrà più scatenato quando clicchi uno dei nodi.

Forse vuoi solo impedire che l'intera pagina si ricarichi?
In questo caso immagino che sia corretto quello hai fatto: nello usercontrol, inserisci la TreeView all'interno di un UpdatePanel. Aggiungi anche un controllo ScriptManagerProxy.
Ora, nella content page, aggiungi uno ScriptManager.

Cliccando uno dei nodi si dovrebbe scatenare un postback parziale e non di tutta la pagina.

ciao
Modificato da BrightSoul il 23 maggio 2012 22.42 -

Enjoy learning and just keep making
BrightSoul ha scritto:

Tuttavia, vedo che stai gestendo l'evento selectednodechanged. Se inibisci il postback, questo evento non verrà più scatenato quando clicchi uno dei nodi.
Forse vuoi solo impedire che l'intera pagina si ricarichi?


Esattamente. Almeno al momento, fin che non trasferisco tutta la logica client-side mi serve ancora il selectednodechanged.

Ho notato che mettendo la proprietà SelectAction del nodo a TreeNodeSelectAction.Expand non mi fa più questo scherzetto, però ovviamente perdo anche il mio selectednodechanged.
BrightSoul ha scritto:

Forse vuoi solo impedire che l'intera pagina si ricarichi?
In questo caso immagino che sia corretto quello hai fatto: nello usercontrol, inserisci la TreeView all'interno di un UpdatePanel. Aggiungi anche un controllo ScriptManagerProxy.


Lo ScriptManagerProxy l'avevo tolto perchè inizialmente mi serviva per caricare il file contenente gli script JavaScript.


Ora, nella content page, aggiungi uno ScriptManager.


Già messo nella masterpage. La content page ha il suo ScriptManagerProxy dove carico jQuery ed altre librerie + miei JavaScript.


Cliccando uno dei nodi si dovrebbe scatenare un postback parziale e non di tutta la pagina.


L'avevo fatto ma non c'era verso di farlo funzionare. Dovevo però riprovare con impostando il parametro TreeNodeSelectAction.Expand.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.