PageMaster ASP .NET

cs_Sabine25 Messages postés 84 Date d'inscription jeudi 1 mars 2007 Statut Membre Dernière intervention 22 juin 2007 - 4 avril 2007 à 22:05
OzFab Messages postés 2 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 9 avril 2007 - 9 avril 2007 à 14:49
Bonjour,
j ai un treeview dans ma PageMaster mais quan d je clique sur l un des item j aimerai qu il apparaisse un label dans le ContentTemplate ! Ce label je l ai glissé dans le Content mais je sais pas comment l appeler!
merci

protected
void TreeView1_SelectedNodeChanged1(
object sender,
EventArgs e)
{
            
if (TreeView1.SelectedValue ==
"Add User")
            {
                  // label1.visible=true ....
             }
}

merci
Sabine

4 réponses

HolyDev Messages postés 40 Date d'inscription jeudi 27 mars 2003 Statut Membre Dernière intervention 5 février 2008
5 avril 2007 à 00:34
Ici http://channel9.msdn.com/ShowPost.aspx?PostID=220517
j'ai trouvé un truc du genre

   <sub>protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
        if (TreeView1.SelectedValue == "Riri")
        {
            Control c2 = Find(Page, "LabelATrouver");
            if (c2 == null)
            { return; }
            else
            {
                Label myLabel = (Label)c2;
                myLabel.Text = "Qui t'encule dans le taxi";
            }
        }
    }

    public static Control Find(Control C, String ControlName)
    {
        if (C.ID == ControlName) return C;
        foreach (Control c in C.Controls)
        {
            Control cntrl = Find(c, ControlName);
            if (cntrl != null) return cntrl;
        }
        return null;
    }
</sub>
MrFoote explique qu'un FindControl() ne fonctionne as sur une masterpage et que du coup il a écrit la fonction Control Find(Control C, String ControlName) pour le faire.
Enfin ça reste bizarre ton affaire car je vois pas l'utilité d'une master page si c'est pour l'utiliser ainsi... L'inverse serait plus logique et de fait le FindControl() doit fonctionner...

VB is my cup of tea !!! [;)]
0
cs_Sabine25 Messages postés 84 Date d'inscription jeudi 1 mars 2007 Statut Membre Dernière intervention 22 juin 2007
5 avril 2007 à 17:06
Salut,
je ne comprends pas ce que tu veux dire par: "l inverse serait plus logique" ?

Je reprends mon idée:
J ai fais un tableau 2*2, dans un master Page!
j ai mis mon treeview dans la 1er colonne, 2ieme ligne
et dans la 2ieme col, 2ieme ligne , j ai mon Content1

Quand je clique sur User Name de mon treeview, je voudrais avoir dans mon Content1, les textbox désirés qui apparaissent!!!

Je sais pas si j ai été très claire! Je débute et j ai que 3 mois pour faire un truc potable, donc peux tu m aider, ce serait super!!!

Pour toi est ce que c est Logique?
Si non, comment vois tu le truc?
A quoi sert vraiment la fonction FindControl?

Merci pour tes conseils

Sabine
0
HolyDev Messages postés 40 Date d'inscription jeudi 27 mars 2003 Statut Membre Dernière intervention 5 février 2008
6 avril 2007 à 01:44
Salut,
Bon déjà dsl pour le

myLabel.Text en fait le noeud dans mon exemplz s'apelle "Riri" enfin voila



Sinon j'ai été un peu vite dans mon premier message
Il suffit de faire



    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
        Label


labelCasted









= (Label)ContentPlaceHolder1.FindControl("label1");
       


labelCasted


.Text = "Qui fait des choses";



       


labelCasted


.Visible = False;




    }

pour appeler label1 du content.

Et donc me suis emballé sur la logique vu que le FindControl() est possible. Mais il faut quand même caster le résultat de



FindControl()



<sup>
<sub>
(Label)ContentPlaceHolder1.FindControl("label1")
</sub>
</sup>



car on ne sait pas quel est le type du control (enfin on sait c'est label mais la MasterPage ne connait pas le contenu de ses ContentPlaceHolder) et du coup à l'inverse de ce que je croyais le Content ne connait pas non plus le contenu de sa MasterPage et même moins(la meme méthode pour appeler le treeview ne fonctionne).

Perso ton histoire je ferais comme ça, une page pour chacun des noeuds de ton treeview car en définitif c'est une sorte de menu. Si les noeuds de ton treeview sont très changeants voir dynamique alors remet en cause l'utilité des content.
Ton


"Add User"
me fait penser que tu souhaite afficher un formulaire d'adduser ce qui mérite une page adduser.aspx. Au clic sur le noeud adduser tu navigue vers adduser.aspx
<sub>
<sup>

Response.Redirect("../adduser.aspx");



Enfin tout ça c'est de l'extrapolation c'est ti ça que tu veuxfaire ?



</sup>
</sub>








VB is my cup of tea !!! [;)]
0
OzFab Messages postés 2 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 9 avril 2007
9 avril 2007 à 14:49
Je ne suis pas sur d'avoir bien saisi ce que tu veux faire.
Résumons : tu as un treeview dans ta masterpage et tu veux afficher un contenu spécifique dans le content de la masterpage quand tu cliques sur un élément de ton treeview ?
Dans ce cas, ne serait-il pas plus logique de faire une nouvelle page qui contient les controles que tu veux afficher et qui utilise la masterpage et sur ton treeview, au lieu d'essayer de modifier le contenu d'un controle, de juste y mettre un lien vers cette nouvelle page avec les infos nécessaires en paramètres ?
Car, si j'ai bien compris, tu détournes un peu le fonctionnement classique de la MasterPage alors qu'il est possible de l'utiliser comme elle est censée l'être.

OzFab : The bouncing developer :)
0
Rejoignez-nous