Problème sur l'événement EventHandler dans une WebPart

Laulle Messages postés 2 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 3 avril 2009 - 2 avril 2009 à 17:06
GillouXman Messages postés 561 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 10 juin 2010 - 3 avril 2009 à 10:41
Bonjour,

Je suis actuellement entrain de développer un site Web sous SharepointDesigner. Pour ce faire je dois créer une WebPart.

J'ai créé un projet sous VS2005.
Type de projet: Visual C# => Sharepoint => Composant WebPart

Le but de ma WebPart est de pouvoir remplir un formulaire afin de remplir une base de donnée sous SQL serveur 2005.
(Je suis OBLIGER de le créer sous VS2005, donc je n'ais pas d'autre choix que de passer par la manière suivante)

Dans mon WebPart j'ai créé plusieurs composants: bouttons, textbox, Label, RadioButtonList, Dropdownlist.

A un endroit, dans ma WebPart, lorsque l'on fait un choix avec une Dropdownlist, alors il doit y apparaitre un tri sur une RadioButtonList.
Je m'explique:
Imaginons que:
Ma dropdownlist soit un type d'annimal (poisson, oiseau, reptil, ...)
Ma RadioButtonList possède tous les annimaux (requin, raie, baleine, dauphin, lézard, crocodile, boa, cobra...)

En fonction de ma valeur sélectionnée, je voudrai que ma RadioButtonList se remplie avec certaine valeurs:
requin, raie, baleine, dauphin si la valeur sélectionné dans ma Dropdownlist la valeur sélectionnée est "poisson"
De même si je sélectionne "reptil" dans ma Dropdownlist, je souhaiterais que ma RadioButtonList affiche: lézard, crocodile, boa, cobra...

Voici mes étapes de développement:

Je load de ma page, je passe par un CreateChildControls (afin de pouvoir rafraichir ma RadioButtonList avec ma DropDownList):

protected override void CreateChildControls()
{
    Init_Page();
}

Ensuite dans mon Init_Page(), j'effectue ces différentes étapes:

public void Init_Page()
{
    //Je vais chercher les valeurs dans ma base sql => cela fonctionne parfaitement

     //Je remplis ma Dropdownlist => cela fonctionne parfaitement

    //Je l'affiche=> cela fonctionne parfaitement

    //Je crée un événement sur ma dropdownlist:
    Dropdownlist_Annimaux.SelectedIndexChanged += new System.EventHandler(AnnimauxSelected);
}

Lorsque mon événement se produit, j'aimerais stocker la valeur choisi dans une variable de session:

protected void AnnimauxSelected(object sender, EventArgs e)
{
    Page.Session.Add("AnnimalChoisit", Dropdownlist_Annimaux.SelectedItem.Text.toString());
}

Mon problème: Cela ne fonctionne pas !!! Je ne passe jamais dans mon événement (je l'ai testé en Débug, j'y ai mis un point d'arrêt)

Page.Session.Add( ID, objet) fonctionne très bien car je l'ai testé de la manière suivant:
    Page.Session.Add("Test","Coucou");    string resultat Page.Session["Test"].ToString();> Dans resultat, on trouve bel et bien la valeur "Coucou"
(je l'ai également testé à l'aide de la variable Page.IsPostBack)

Je galère depuis pas mal de temps la dessus...

Merci d'avance d'avoir jeté un coup d'oeuil sur mon problème et des réponse que vous pourriez m'apporter.

3 réponses

GillouXman Messages postés 561 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 10 juin 2010
2 avril 2009 à 21:21
est ce que le postback se fait ?
0
Laulle Messages postés 2 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 3 avril 2009
3 avril 2009 à 10:24
En effet j'ai oublié de le mentionner.

Oui, j'ai activé le postback sur ma dropdownlist de la manière suivante:

Dropdownlist_Annimaux.AutoPostBack = true;

C'est grace à ce paramètre que j'ai pu valider que ma variable Page.Session fonctionnait correctement de la manière suivante:
if(!Page.IsPostBack)
{
    Page.Session.Add("Test","Coucou");
}
else
{
    string resultat = Page.Session["Test"].ToString();
}
0
GillouXman Messages postés 561 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 10 juin 2010
3 avril 2009 à 10:41
donc si je comprends bien

le postback se fait bien mais il ne va pas dans l'event ?

puis je vois ta method

protected override void Render(HtmlTextWriter writer)
        {

        }
0
Rejoignez-nous