TreeView et OnClick event
Bonjour,
J'ai un soucis pour le gestion d'un treeview. Prenons l'exmeple du treeveiw ci dessous.
Level_1
-Level_11
-Level_12
--Level_13
Je souhaite déclencher des actions en code-behind sur un Onclick (mise a jour de variable de session et redirection) uniquement sur Level_13, les autres niveaux étant géré naturellement par le composant.
Quelles solutions puis je mettre en oeuvre ?
Merci
Bonne ou mauvaise solution
Voila la solution que j'ai trouvé
Lors de la création de la feuille qui devrait générer un OnClick :
je rempli un HiddenField avec une string de commande et je génère un "pseudo" postback en recopiant une chaine __doPostBack() d'un élément existant
Ce "pseudo" post back genere l'erreur suivante :
Argument de publication ou de rappel non valide. La validation d'événement est activée via <pages enableEventValidation="true"/> dans la configuration ou via <%@ Page EnableEventValidation="true" %> dans une page. Pour des raisons de sécurité, cette fonctionnalité vérifie si les arguments des événements de publication ou de rappel proviennent du contrôle serveur qui les a rendus à l'origine. Si les données sont valides et attendues, utilisez la méthode ClientScriptManager.RegisterForEventValidation afin d'inscrire les données de publication ou de rappel pour la validation.
La solution se trouve sur le lien suivant :
http://blog.developpez.com/nico-pyri...un_click_de_bo
On ajoute la procedure de render()
Dans le page_load, je teste la valeur du hidden field:
- si vide : rien a faire
- si !vide : j'interprète ma commande et je déclenche mes traitements
------------------------------------------------------
Ajout de la commande javascript
ChildNode.NavigateUrl = "javascript:document.getElementById('" + HiddenField1.ID + "').value = \"" + CmdString+ "\";__doPostBack('TreeViewStructure','sTOTO')";
Erreur validation evenement
protected override void Render(HtmlTextWriter writer)
{
Page.ClientScript.RegisterForEventValidation(TreeViewStructure.ID, "TOTO");
base.Render(writer);
}