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 :

[C#]Récupération de valeurs après un postback


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 74
    Points : 37
    Points
    37
    Par défaut [C#]Récupération de valeurs après un postback
    Bonjour,

    J'ai une page dont une partie des <input type=text ...> sont générés lors de la création de la page.

    Je ne peux donc pas déclarer ces input dans les propriété de ma classe puis qu'ils n'existent pas avant que la page soient "loaded"...

    Je dois pouvoir récupérer les valeurs de ces input lors d'un click sur un bouton valider..

    je ne sais pas comment faire.

  2. #2
    Membre expérimenté Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 717
    Points : 1 338
    Points
    1 338
    Par défaut
    salut

    est ce une obligation d'utiliser des <input type="text"... > ??

    car en utilisant les composants asp, ce serait quand même beaucoup plus simple et au final tu as le meme resultat (en rendu design).

    sinon je pense qu'il faut que tu ajoutes l'attribut runat="server"

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 74
    Points : 37
    Points
    37
    Par défaut
    non ce n'est pas une obligation..

    j'utilise bien runat="server"

    mais mon problème est que cet input text n'est pas static, il est créé au pageload, je ne peut donc pas le déclarer dans mon codebehind comme on le ferait pour un input static... et dans ce cas là, je ne sais pas quoi faire.

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Peut etre avec Page.FindControl(...)

  5. #5
    Membre expérimenté Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 717
    Points : 1 338
    Points
    1 338
    Par défaut
    je ne comprends pas pourquoi tu n'utilises pas un composant simple textBox d'asp?

    comme ca tu as juste a faire maVar = textboxId.Text et c'est tout bon

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 74
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par bizet Voir le message
    je ne comprends pas pourquoi tu n'utilises pas un composant simple textBox d'asp?

    comme ca tu as juste a faire maVar = textboxId.Text et c'est tout bon
    parce que je débute en .Net et que je ne connais pas les différence de fonctionalitées entre les composant "classiques" et ceux propre a asp.net ^^


    Si j'utilise un <asp:textbox (ou qque chose dans ce gout là) je ne dois pas le déclarer dans les propriétées de ma calsse pour pouvoir en récupérer la valeur ?

    ou rien avoir ?

  7. #7
    En attente de confirmation mail Avatar de fred777888999
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 250
    Points : 292
    Points
    292
    Par défaut
    Tu te lance dans qq chose de complique. Le principe est de construire systematiquement tes composants et de bien les ajouter a ta page (addControl) a chaque postback. Ensuite, tu pourra retrouver leurs valeurs avec un findControl. Comme deja dit plus haut, il est plus simple d'utiliser des textBox.
    Un exemple rapide aspx qui ajoute des controles a une balise <ul> :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="LibellesEquipements.ascx.cs" Inherits="UI_Equipement_LibellesEquipements" %>
    <ul runat="server" id="ListeLibelles" style="margin:0; padding:0; list-style:none; width:300px;">
    </ul>
    et son code cs qui genere les <li> avec un controle associe :
    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)
        {
            // Construire dans tous les cas. Dans un premier temps construire tous les controles.
            foreach (...)
            {
                // Ajouter un Li au controle ul.
                Control lCtrlLi = new WebControl(HtmlTextWriterTag.Li);
                // Generer le controle a ajouter. 
                // Attention a bien lui donner un id unique qui ne change pas d'un appel a l'autre.
                Control lCtrl = GenerateControle("idGenere"); // en gros un new TexBox.
                lCtrlLi.Controls.Add(lCtrl);
                this.ListeLibelles.Controls.Add(lCtrlLi);
            }
    }
    Et la recuperation de la valeur si tu as genere un textbox.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Control lCtrl = listeLibelles.FindControl("idGenere");
    string Texte = ((TextBox) lCtrl).Text;

  8. #8
    Membre expérimenté Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 717
    Points : 1 338
    Points
    1 338
    Par défaut
    Ok, alors si tu debutes, je te conseille tres fortement de prendre un tuto et de le faire pas a pas. tu verras ca prends du temps mais tu apprendras beaucoup mieux.

    La technologie .Net est vraiment différente de ce que tu as pu apprendre jusqu'a maintenant et il ne faut pas griller les etapes.

    Pour tout ce qui est formulaire par exemple, il ne faut plus utiliser les composants html mais les composants asp; ceux-ci feront tout le travail à ta place.

    bon courage

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 74
    Points : 37
    Points
    37
    Par défaut
    heuuu mouai, je t'avoues que je suis un peu paumé là.

    Je vois le principe, mais de là à l'appliquer à ce que j'ai besoin :s


    N'y a t il pas un autre moyen de récupérer la valeur d'un textbox un peu à la façon d'un post ou d'un get ? sans devoir le déclarer dans les propriété de la classe.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 74
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par bizet Voir le message
    Ok, alors si tu debutes, je te conseille tres fortement de prendre un tuto et de le faire pas a pas. tu verras ca prends du temps mais tu apprendras beaucoup mieux.

    La technologie .Net est vraiment différente de ce que tu as pu apprendre jusqu'a maintenant et il ne faut pas griller les etapes.

    Pour tout ce qui est formulaire par exemple, il ne faut plus utiliser les composants html mais les composants asp; ceux-ci feront tout le travail à ta place.

    bon courage

    hihi vui mais bon, on m'a lancé là dedans au boulot, c'est clair que mon prog sera à améliorer sur certain points, mais là tout tourne sauf ce truc là qui me pose des problèmes.

    Enfait j'ai 1 ou plusieurs textbox qui sont généré en fonction d'un critère bien précis, mais qui peut changé pour tout article choisis, c'est pour celà que la génération de mes textbox est dynamique.


    t'as un bon tuto a me conseiller en ce qui concerne les contrôle html/asp.net principalement ?

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 74
    Points : 37
    Points
    37
    Par défaut
    fred,

    d'où viens GenerateControle dans ton exemple ?

    j'ai cherché un peu mais même mon ami google ne le connait pas

  12. #12
    Membre expérimenté Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 717
    Points : 1 338
    Points
    1 338
    Par défaut
    est ce que tu peux montrer plus de code, peut etre que ca aidera car la je comprends pas trop ce que tu cherches a faire.

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 74
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par bizet Voir le message
    est ce que tu peux montrer plus de code, peut etre que ca aidera car la je comprends pas trop ce que tu cherches a faire.
    j'ai rien de concret à te montrer, mais en gros ce qu'il me faut c'est un truc qui ressemble à l'exemple de fredxxxxxxxxx.

    J'ai une page web avec du code behind en C#

    certains éléments de cette pages sont statiques et ne posent aucun problèms, d'autres sont dynamique.

    pour être clair, dans le Page_Load, je vais chercher une valeur dans une DB et en fonction de cette valeur, j'affiche un ou plusieurs Textbox.

    étant donné que ces Textbox n'existent pas au départ, ils ne sont donc pas déclaré dans les propriétées de ma classe et je ne peux pas en récupérer la veleur.

  14. #14
    Membre expérimenté Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 717
    Points : 1 338
    Points
    1 338
    Par défaut
    Salut

    J'ai rencontré à peut pres le meme genre de probleme voila comment j'ai procédé :

    j'ai créé un usercontrol dans lequel je mets mes différents composants. dans le codebehind de ce usercontrol je fais des getter/setters pour acceder aux propriétés

    ensuite je fais un repeater avec la liste de ma classe a mettre dans mon Uc et je fais un <%# DataBinder.Eval(Container.DataItem, "Titre") %> pour chaque propriété de ma classe.

    Comme ca tu as l'affichage de tes textbox.

    Apres comment récupérer les infos de toutes tes texboxs a la fois, aucune idée pour le moment

    Mais il doit etre possible de recuper chaque item du repeater (surtout si tu connais le nombre) et de recuperer le contenu des texbox.

    Ceci n'est qu'une idée bien sur!!

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/04/2011, 16h07
  2. Réponses: 1
    Dernier message: 01/10/2010, 18h07
  3. Récupération de la valeur après soumission
    Par Ksimo dans le forum Langage
    Réponses: 7
    Dernier message: 22/11/2007, 14h13
  4. [MySQL] syntaxe variable lors d'une récupération de valeurs après mysql
    Par mussara dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 06/11/2006, 13h30
  5. Récupération valeur après validation du formulaire
    Par Bluespike62 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/01/2006, 14h37

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