IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Récupérer selectedIndex après Postback


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 43
    Par défaut Récupérer selectedIndex après Postback
    Bonjour,

    Dans un formulaire, je remplis un contrôle ListBox après déclenchement d'un évènement OnClick sur un bouton. Une fois ma ListBox remplie, je dois pouvoir sélectionner un élément dans cette dernière, puis déclencher une autre évènement OnClick sur un second bouton.

    Après PostBack (le second donc), je souhaite récupérer l'index de l'item sélectionné dans mon contrôle ListBox. Or, ce dernier est toujours égal à -1.
    Pourtant, la propriété EnableViewState de ma ListBox possède la valeur "True".

    Avez-vous une idée d'où peut venir le problème ?

    Merci par avance.

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par Digilougm Voir le message
    Bonjour,

    Dans un formulaire, je remplis un contrôle ListBox après déclenchement d'un évènement OnClick sur un bouton. Une fois ma ListBox remplie, je dois pouvoir sélectionner un élément dans cette dernière, puis déclencher une autre évènement OnClick sur un second bouton.

    Après PostBack (le second donc), je souhaite récupérer l'index de l'item sélectionné dans mon contrôle ListBox. Or, ce dernier est toujours égal à -1.
    Pourtant, la propriété EnableViewState de ma ListBox possède la valeur "True".

    Avez-vous une idée d'où peut venir le problème ?

    Merci par avance.
    Rien à voir avec le ViewState.
    Tu dois surement remplir la ListBox dans le page load donc ta sélection est "effacée" à chaque postback

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 43
    Par défaut
    Ce n'est pas le viewstate qui s'occupe de garder les données saisies ainsi que ce type de sélection entre les pages ?

    Je ne remplis pas ma ListBox dans la Page_Load. Celle-ci est remplie dans la métode déclenchée suite au clic sur le premier bouton. Après le deuxième PostBack, la méthode n'est pas rappelée. D'ailleurs, j'ai également testé de la rappeller, mais je n'arrive quand même pas à récupérer le selectedIndex.

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par Digilougm Voir le message
    Ce n'est pas le viewstate qui s'occupe de garder les données saisies ainsi que ce type de sélection entre les pages ?

    Je ne remplis pas ma ListBox dans la Page_Load. Celle-ci est remplie dans la métode déclenchée suite au clic sur le premier bouton. Après le deuxième PostBack, la méthode n'est pas rappelée. D'ailleurs, j'ai également testé de la rappeller, mais je n'arrive quand même pas à récupérer le selectedIndex.
    Si le viewstate intervient mais si c'était un problème de viewstate, ta liste serait vide après le postback, ce qui ne semble pas être la cas

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 43
    Par défaut
    Au temps pour moi, j'ai oublié de le préciser, car oui, ma liste est vide.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 51
    Par défaut
    Bonjour,

    Petite question, pourrais-tu nous montrer ton Page_Load.

    Mais si tu remplis ta liste de manière dynamique, il faut le refaire après le postback si tu veux récupérer l'index.

    Cordialement Neodream.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 43
    Par défaut
    Le Page_Load n'est pas intéressant, je n'ai absolument rien dedans en rapport avec les différentes méthodes. J'ai bien essayé de remplir à nouveau la liste après le PostBack mais rien n'y fait.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 51
    Par défaut
    Bon alors pourrais-je te demander le code de chargement de ton ListBox ? Enfin l'action que tu fais lors du chargement de ton ListBox ?

    En gros dans ton code tu dois avoir un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
               //Code se faisant que lors du premier chargement de la page.
            }
            else
            {
               //Code se faisant que lorsque la page se recharge... Sur un postBack
               //C'est là que tu dois reremplir ton ListBox de la même manière que tu 
               //L'a remplis avant le PostBack genre : ListBox_Charge();
             }
             //Code qui se fait à n'importe quel chargement de la page.
        }
    Voilà, en espérant pouvoir t'aider.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 43
    Par défaut
    Comme dit plus haut, l'appel ne se fait pas depuis le page_Load. La méthode remplissant ma liste résulte de l'évènement OnClick d'un bouton du formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Public Sub RemplirListeStructure()
            Dim listeStructure As List(Of Struct) = c.RecupererListeStructure()
     
            For Each s As Struct In listeStructure
                Dim li As ListItem = New ListItem(s.nomStructure, s.IdStructure)
                lbS.Items.Add(li)
            Next
    End Sub
    Suite à la sélection d'un élément dans cette liste, l'utilisateur devra cliquer sur un second bouton afin de déclencher une nouvelle méthode.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <asp:Button runat="server" Text="Ajouter" ID="addAccess" OnClick="AjouterAcces" />
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Public Sub AjouterAcces(ByVal sender As Object, ByVal e As EventArgs)
            DonnerDroitStructure(lbS.SelectedIndex)
    End Sub
    Sauf que dans cette seconde méthode, lbS.SelectedIndex me renvoie toujours -1. J'ai bien évidemment tenté de rappeler ma méthode RemplirListeStructure() avant de récupérer l'index sélectionné, mais rien n'y fait.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 51
    Par défaut
    Citation Envoyé par Digilougm Voir le message
    Comme dit plus haut, l'appel ne se fait pas depuis le page_Load.
    Il est nécessaire que lors du PostBack, comme tu ajoutes de manière dynamique les valeurs de ta list, de les rajouter de la même manière.

    Donc dans mon code précédent, si tu fait un truc du genre comme ceci dans ton Page_Load ça devrait fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                   if(Page.isPostBack)
                   {
                           RemplirListeStructure();
                   }
    Voilà, normalement le problème est bien là, crois moi.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 43
    Par défaut
    J'aimerais bien te croire, mais force est de constater que le problème n'est pas là.
    Bien que la liste soit à nouveau remplie, l'index retourné reste toujours égal à -1.

    Pourtant je suis persuadé que le code est bon. D'autant que je fais la même chose avec une autre liste, et la récupération de l'index est bonne.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 51
    Par défaut
    Bon forcé de te dire que là je ne vois pas...

    SI quelqu'un d'autre avait une idée en lisant ce topic ^^.

    Digilougm si tu enlève ton traitement des données, après le cliques ta list est-elle toujours remplis ? En gros si tu commentes cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DonnerDroitStructure(lbS.SelectedIndex)
    que se passe-t-il ?

    Si ta listbox est vide, il y a un problème sur le postback, et il faut que tu remplissent ta list avant de réaliser ta fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DonnerDroitStructure(lbS.SelectedIndex)
    Si ta liste est pleine, alors ça veut dire que ta fonction DonnerDroitStructure(lbS.SelectedIndex) s'execute avant que tu remplisses ta liste.

    Cordialement Neodream.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 43
    Par défaut
    Citation Envoyé par Neodream Voir le message
    Digilougm si tu enlève ton traitement des données, après le cliques ta list est-elle toujours remplis ? En gros si tu commentes cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DonnerDroitStructure(lbS.SelectedIndex)
    Non.

    Si j'appelle la méthode RemplirListeStructure(), la liste est bien évidemment complète mais impossible de récupérer l'index sélectionné. Pourtant, la méthode est bien exécutée avant DonnerDroitStructure().

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 51
    Par défaut
    Je suis désolé mais là je dois y aller, je ne pourrais regarder plus en détail que Lundi. J'espère que quelqu'un t'aidera à trouver là solution d'ici là.

    Cordialement Neodream.

  15. #15
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 17
    Par défaut
    je le même problème ,est ce que vous avez eu une solution ?

  16. #16
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 220
    Par défaut
    Ben si la ListView doit forcément être rechargée à chaque postback (ce dont je doute vu la tronche de la fonction qui la remplit), la meilleure solution est d'intercepter l'évenement OnSelctedIndexChanged de ta ListView pour récupérer l'id de l'item sélectionné pour le stocker ou dans une variable de classe, dans le viewstate ou ce que tu veux.

Discussions similaires

  1. [REDHAT] Récupérer redhat apres réinstallation de windows
    Par jalam dans le forum RedHat / CentOS / Fedora
    Réponses: 3
    Dernier message: 08/02/2007, 20h26
  2. Réponses: 4
    Dernier message: 21/07/2006, 10h14
  3. Récupérer PK apres insertion
    Par Mandotnet dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 10/04/2006, 18h36
  4. [C#] Se replacer au bon endroit d'un form après PostBack
    Par gael.mases dans le forum ASP.NET
    Réponses: 3
    Dernier message: 16/11/2005, 11h54
  5. [VB.NET] [ADO.NET] Récupérer id après insertion
    Par nashouille dans le forum Accès aux données
    Réponses: 9
    Dernier message: 09/01/2005, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo