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 :

Sauvegarde des données d'une page à l'autre en c# asp.net


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 26
    Points : 6
    Points
    6
    Par défaut Sauvegarde des données d'une page à l'autre en c# asp.net
    Bonjour,

    Voilà mon problème, j'ai toujours codé pour le moment en PHP / HTML / CSS.
    Je me suis mise depuis peu à asp.NET avec C# (où j'ai des bases).

    Aujourd'hui, j'aimerai pour mon site web, modifier des données de ma base de données. Je sais qu'asp.NET Webforms permet de faire ça automatiquement à travers Gridviews ou autre. Mais le problème est que je ne veux pas développer cela comme ça. J'ai beau chercher sur le net, la seule solution qu'ils donnent sont avec la modification/suppression directement lié au tableau.

    Mon idée est que, sur une page il y ait le récapitulatif de ma table, où l'on peut sélectionner une donnée. Une fois sélectionnée, on peut appuyer sur un lien/bouton "Modifier" qui nous conduit directement dans une page de type "formulaire" mais qui gardent les informations. Le problème est que, en PHP je sais comment faire avec le $_POST, mais en C# et asp.NET j'ai un peu de mal. Je pense qu'il faut rajouter à notre balise <forms> l'action post mais au-delà de ça, je n'ai pas d'idées. Si cela peut vous aider, je vous montre par image ce que je voudrais que ça donne:

    Nom : premierpage.jpg
Affichages : 2115
Taille : 31,2 Ko

    Une fois sélectionnée, on clique sur modifier et une page s'affiche avec les données déjà rentrées:

    Nom : deuxiemepage.jpg
Affichages : 2021
Taille : 9,4 Ko

    C'est pas d'un design excellent, car je viens de le faire. Je veux juste connaître la démarche en fait. En gros, comment garder des données d'une page à l'autre. Après, pour les modifications dans la base, je sais faire.
    J'essaye d'être claire dans mes explications, j'espère que ça ira ...
    Si jamais quelqu'un connait des tutos ou autre, je suis preneuse...

  2. #2
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 34
    Points : 21
    Points
    21
    Par défaut
    Bonjour Linsay,

    Je ne suis pas experte dans le domaine, moi-même je rencontre ce genre de problème. Mais tu peux peut-être faire un tour sur cette vidéo:

    .

    Il code en VB mais il existe de nombreux convertisseurs en C#.

    Néanmoins, je ne suis pas experte, j'espère que tu auras d'autres réponses ou que tu y arriveras avec cette vidéo.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 26
    Points : 6
    Points
    6
    Par défaut
    Merci Limoen pour ton aide, je regarde cela de suite.
    Mais j'aurai également voulu savoir en quelque sorte, comment garder le même ID en fait entre mes données.
    Et s'il y avait un moyen de sélectionner ma ligne de tableau sans avoir ce bouton "Sélectionner".
    Si quelqu'un peut m'éclairer...

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Une page ASP.NET (webform) poste tjs ses données. Utilise une colonne de type hyperlink qui te redirigera vers ta page détail avec l'id en paramètre.
    dans le page_init (et pas le page_load) de ta page tu initialises tes données et sur l'event d'un bouton tu fais ta sauvegarde...

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 26
    Points : 6
    Points
    6
    Par défaut
    Merci Dokho1000,
    mais justement, comment mettre l'ID en paramètre sur le page_init?
    En fait, je vois la structure dans ce style: quand la page se charge, je ne fais apparaître que les données de la personne sélectionnée (Donc ID de la personne). Le problème c'est que je n'ai aucune idée de la procédure. Comment mettre en lien l'ID sélectionné sur une autre page et comment faire apparaître dans une/des TextBox les informations de cette personne?

    Je me doute que c'est une question bête, et j'en suis désolée, c'est juste que je suis complètement perdue.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Si tu passes ton id en variable d'url tu peux la récuperer en faisant : this.Request.QueryString["tonnomdevariable"]

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 26
    Points : 6
    Points
    6
    Par défaut
    Le problème en passant l'ID en URL c'est la sécurité... Il n'y aurait pas un autre moyen?

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 26
    Points : 6
    Points
    6
    Par défaut
    En fait, si je peux présenter en "étape" mon/mes soucis, j'ai essayé de faire une méthode toute simple qui sélectionne toutes mes données, que je pense appelé dans mon Page_Load, et ensuite, sur le clique du bouton "Modifier", les données sont modifiées. Là où je suis coincée, c'est sur ce que doit contenir mes TextBox:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            protected void Charger()
            {
                SqlConnection conn = null;
                conn = new SqlConnection("Data Source=.....;Initial Catalog=DBCourse;Integrated Security=True");
                SqlCommand cmd = new SqlCommand("SELECT panier_ID, panier_libelle, panier_quantite FROM Panier WHERE panier_ID = @panierID", conn);
                conn.Open();
     
                TextBoxPanierLibelle.Text = ?; // Récupération de panier_libelle
                TextBoxPanierQuantite.Text = ?; // Récupération de panier_quantite
     
            }
    Sans la question du changement de page, je n'arrive pas à juste afficher une donnée dans un TextBox. Je pense qu'il faut passer par un ExecuteReader(). Je pensais aux propriétés comme GetValue mais cela prend le nom de la colonne et non ce qu'elle contient....

    Ensuite, dans l'évolution, il faut que je trouve un moyen de récupérer l'ID (d'où également mon besoin de savoir comment garder des données d'une page à l'autre), du type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd.Parameters.Add("@panierID", SqlDbType.Int).Value = ?; // Récupération de panier_ID
    Je suis désolée, ce que je viens de mettre en code est à moitié en algorithme, mais c'est pour essayer de me faire comprendre... J'essaye d'y aller par étape en renseignant un ID réel dans ma requête, mais même en faisant cela je suis bloquée.

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 26
    Points : 6
    Points
    6
    Par défaut
    Je viens de réussir à faire "apparaître" ma donnée dans une des cases avec ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     conn = new SqlConnection("Data Source=WEB-MP\\ADCONTACTS;Initial Catalog=Contact;Integrated Security=True");
                    SqlCommand cmd = new SqlCommand("SELECT panier_ID, panier_libelle, panier_quantite FROM Panier WHERE panier_ID = 1", conn);
                    conn.Open();
                    SqlDataReader Lecture = cmd.ExecuteReader();
                    while (Lecture.Read())
                    {
                        TextBoxPanierLibelle.Text = (string)Lecture["panier_libelle"];
                        TextBoxPanierQuantite.Text = (int)Lecture["panier_quantite"];
                    }
    Mais il a fallut que je mette un ID spécial et ma case avec la quantité ne m'affiche rien car mon cast en (int) ne fonctionne pas (Impossible d'effectuer un cast d'un objet de type 'System.Int32' en type 'System.String'.).

    Ce bout de code est dans ma méthode Charger(), comme je l'ai montré dans un post précédent, que j'appelle dans la méthode Page_init comme l'a conseillé Dokho1000, pour pouvoir changer les données par la suite.

    Mais je suis toujours bloquée sur ce changement de page en fait et cet ID...

  10. #10
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    Salut,

    Par url :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void Button1_Click(object sender, System.EventArgs e)
    {
        int id =1;
        Response.Redirect("Page.aspx?Id="+id);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (Request.QueryString["Id"]!= null)
        int id = (int)Request.QueryString["Id"];
    Par session :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void Button1_Click(object sender, System.EventArgs e)
    {
        int id = 1;
        Session["Id"] = id; 
        Response.Redirect("Page.aspx");
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(Session["Id"] != null) 
        int id = (int)Session["Id"];
    Par cookie : (Mais attention, les cookies peuvent être bloqués !)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private void Button1_Click(object sender, System.EventArgs e)
    {
        int id = 1;
        HttpCookie httpCookie = new HttpCookie("Id");
        httpCookie.Value = id; 
        Response.Cookies.Add(httpCookie); 
        Response.Redirect("Page.aspx");
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (Request.Cookies["Id"] != null )
        int id = (int)Request.Cookies["Id"].Value;
    Je n'ai pas testé le code, il est possible que des "casts" ne fonctionnent dans ce cas la tu peux utiliser "Convert.ToInt32(Session["Id"]);"

  11. #11
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 26
    Points : 6
    Points
    6
    Par défaut
    Bonjour katkiller,

    Merci pour ton aide. Malheureusement, je t'avoue que cela me laisse complètement perdue. Je comprend que ce code doit être appliqué quand l'utilisateur clique sur "modifier". Le problème est que, quand je sélectionne une ligne de mon tableau, comment je fais pour récupérer l'ID de cette ligne? Et ensuite en cliquant sur "modifier", retenir cet ID?
    Je pense que c'est par une méthode tel que "SelectedIndexChanged" avec un "Request.Form["panier_ID"]", le problème est comment je garde cet ID en cliquant sur "modifier"....

    Limoen, j'ai suivi la vidéo que tu m'as envoyé, merci beaucoup. J'ai tenté de traduire moi-même le code, car le convertisseur a décidé de faire sa tête de mule . Bref, du coup j'ai remplacé tout mon code avec mon SqlDataReader par ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SqlConnection conn = null;
    conn = new SqlConnection("Data Source=.....;Initial Catalog=DBCourse;Integrated Security=True");
    SqlCommand cmd = new SqlCommand("SELECT panier_ID, panier_libelle, panier_quantite FROM Panier WHERE panier_ID = @panierID", conn);
    conn.Open();
     
    TextBoxPanierLibelle.Text = Request.Form["panier_libelle"];
    TextBoxPanierQuantite.Text = Request.Form["panier_quantite"];
    Et cela m'affiche des textbox vides. Mais ce qui est normal en fait car le Request va récupérer ce que contient le formulaire présent et comme au départ il ne contient rien.. Enfin je pense que c'est ça, non??

    katkiller, j'avais déjà essayé le:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TextBoxPanierQuantite.Text = Convert.ToInt32(Lecture["panier_quantite"]);
    Et cela m'affiche exactement la même erreur...

    Je suis désolée si je parais brouillon dans mes explications, j'arrive à voir les étapes qu'il faut faire mais pas comment en fait...

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Que ce soit en session ou par url la question de la sécurité ce posera toujours. De plus par session tu ne peux pas accéder à ta page directement. Ce qui peut être embetant dans de nombreux cas.

    Pour récuperer ta valeur entiere tu dois faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Lecture.GetInt32(indexDeTonChamp)
    dans ton cas l'index est 2.

  13. #13
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 26
    Points : 6
    Points
    6
    Par défaut
    J'ai enfin réussi après beaucoup de réflexion à faire ce que je voulais faire grâce à Dokho1000 et katkiller. Merci beaucoup à vous deux! Merci à Limoen également qui m'a éclairé sur l'utilisation du Request.
    Le seul truc qui me dérange est que je suis obligée de passer par l'URL (n'ayant pas de session, et ne voulant pas prendre le risque que les cookies soient désactivés...) et je voulais savoir s'il était possible de cacher quand même cette information sur l'URL? Car quelqu'un qui s'y connait un peu (ou même quelqu'un qui ne s'y connait pas) verra directement cette possibilité de changer n'importe quel élément...

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Il y a plusieurs solutions...

    je peux comprendre que tu souhaites envoyer les données afin d'éviter de faire une requete sql sur ton serveur pour récuperer les données mais je pense pas que ce soit une bonne idée.

    Tu as 3 solutions :

    1. à la place de le redirection de ton lien faire une fontction JS qui te rempli des champs cachés et que tu pourras récuperer par la suite
    2. Sur l'event OnRowCommand (ou de ton hyperlien) récuperer les infos et les mettre en session...
    3. Faire une simple redirection vers ta page en précisant l'id en parametre d'URL et récuperer via une connexion à ta DB le détail...


    Pour ma par je préfère la dernière car la connexion à la DB sera n'aura pratiquement pas d'impact alors que les autres vont générer pas mal de code html en plus dans ta page ce qui risque de pénaliser les performances.

  15. #15
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 26
    Points : 6
    Points
    6
    Par défaut
    Je te remercie beaucoup Dokho1000, tu m'as été d'une grande aide. J'ai choisi de faire ça par session. Mais merci pour toutes tes explications j'y vois beaucoup plus claire, et merci d'avoir eu la patience de m'accompagner dans ma démarche!

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Fais attention a ce que tu stocks dans tes session car tu pourrais agrandir inutilement les mémoire de l'IIS. (le but des sessions est de garder des données qui sont utiles pour toutes la durée de navigation de l'user et non des données temporaire...

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

Discussions similaires

  1. Récupérer des données d'une page pour les récupérer sur une autre
    Par didpoy dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 17/06/2014, 16h58
  2. Transmettre des données d'une page à l'autre
    Par fl0_9 dans le forum Windows Phone
    Réponses: 2
    Dernier message: 23/05/2011, 21h49
  3. [FORM] Récupérer des données d'une page vers une autre
    Par smh_master dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 19/02/2007, 11h49
  4. TRansférer des données d'une table à l'autre
    Par kernel57 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 06/10/2005, 14h05
  5. Conserver des données d'une page à une autre...
    Par Angeldu74 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/08/2005, 14h15

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