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 :

Perte de valeur d'une textbox.


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 38
    Par défaut Perte de valeur d'une textbox.
    salut les gens.

    Le titre n'est pas super clair, mais c'est que je ne saisis pas le problème.

    J'ai créée une page aspx alimentant une listbox depuis une table située dans une bdd sql server.
    J'ai également des boutons permettant de modifier/supprimer/ajouter les enregistrements dans la bdd en fonction de la ligne sélectionnée dans la listbox.
    Si je clique sur ajouter...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Protected Sub BtnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnAdd.Click
            Response.Redirect("ajout.aspx")
        End Sub
    Il va s'afficher une page avec plusieurs textbox afin de saisir les valeurs des différents champs de la table et un bouton pour valider la saisie et insérer les données dans la table.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <asp:TextBox ID="TbPDT_EAN" runat="server" />
    <asp:Button ID="BtnValider" runat="server" Text="Valider" />
    En cliquand sur le bouton valider, je lance un appel vers une classe qui fera le travaille nécessaire (paramètrage des objets SQL et appel à la procédure stockée).
    Pas de problème de ce coté là.

    Par contre en choisissant de modifer un enregistrement existant, si.
    Tout se déroule de la même façon, je clique sur le bouton modifier (j'ajoute dans l'url la valeur de la clé pour interroger la base sur l'enregistrement à modifier) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Protected Sub BtnUpdate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnUpdate.Click
            Response.Redirect("modif.aspx?ean=" + CType(Page.Master.FindControl("LBProduct"), ListBox).SelectedValue.ToString())
        End Sub
    S'affiche alors une page identique à celle d'un ajout, avec les textbox permettant de saisir les données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <asp:TextBox ID="TbPDT_EAN" runat="server" />
    <asp:Button ID="BtnValider" runat="server" Text="Valider" />
    Si ce n'est que ces texbox seront remplies dans le page_load avec les données de l'enregistrement à modifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TbPDT_EAN.Text = CType(System.Web.HttpContext.Current.Session("PRODUCT"), ClassProduct).Product.Rows(0).Item("PDT_EAN").ToString()
    L'utilisateur peut alors modifier la valeur des textbox puis cliquer sur valider pour enregistrer les changements.
    Seulement ici j'ai un problème. Au moment de cliquer pour valider les changements, la valeur des textbox prise en compte sera celle initialisée dans le page_load et non celle saisie par l'utilisateur.

    Pourquoi est-ce que je perds les valeurs saisies par l'utilisateur ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Dans ton Page_Load, ajoute un test sur IsPostBack, de façon à initialiser les champs avec les données de la base uniquement lors du chargement initial de la page:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Sub Page_Load
        If Not IsPostBack
            ' Chargement initial
            TbPDT_EAN.Text = "blabla"
        End If
    End Sub

  3. #3
    Membre averti
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 38
    Par défaut
    Ok...
    C'était bien ça, j'ai honte... Merci.
    Mais je ne comprends pas pourquoi il y a un postback de ma page, puisque les propriétés autopostback de mes textbox sont à false (valeur par défaut).

    Et du même coup je ne comprends pas pourquoi je n'ai pas le problème sur ma page d'ajout (la seule différence étant l'initialisation de la valeur des textbox dans le page_load de la page de modif). Pourquoi je n'y perds pas la valeur de mes textbox en me retrouvant avec des textbox vident ?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Et du même coup je ne comprends pas pourquoi je n'ai pas le problème sur ma page d'ajout (la seule différence étant l'initialisation de la valeur des textbox dans le page_load de la page de modif). Pourquoi je n'y perds pas la valeur de mes textbox en me retrouvant avec des textbox vident ?
    peut-être parce que dans ta page d'ajout tu n'initialises pas les textbox ?

  5. #5
    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
    Parce que quand tu cliques sur un bouton, ca génère un PostBack.
    De plus l'événement PageLoad arrive avant celui qui correspond à ton clic sur le bouton, donc la valeur saisie par l'utilisateur est remplacée par la valeur chargée pendant le PageLoad (d'où l'utilité du Not IsPostBack)

    Dans le cas de l'ajout, tu charges rien dans tes textbox donc tu perds pas les valeurs saisies

  6. #6
    Membre averti
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 38
    Par défaut
    Ok, ok...

    Merci à vous alors (une chouille de plus à tomlev :p).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VBA-Excel copier la valeur d'une textbox dans une cellule
    Par GrandGarfield dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/08/2006, 10h15
  2. [vba excel] Recherche valeur d'une textbox dans une feuille
    Par vanessaferraz dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/08/2006, 10h55
  3. Réponses: 9
    Dernier message: 30/05/2006, 10h33
  4. [VB.NET] rafraichir une valeur dans une textbox
    Par grand_prophete dans le forum Windows Forms
    Réponses: 1
    Dernier message: 14/04/2006, 12h40
  5. Utilise la valeur d'une textbox dans une requête sql
    Par podidoo dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 29/03/2006, 09h53

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