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 :

Response.Redirect - Afficher les résultats d'un formulaire


Sujet :

ASP.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Response.Redirect - Afficher les résultats d'un formulaire
    Bonjour,

    Je débute en ASP.NET avec VWD 2010 Express et SQL Server 2008 R2 Express.
    Je crée une application sous forme de site web (en c#) pour la gestion des contacts de mon entreprise.

    Mon problème :

    Lorsque je crée un contact via un formulaire (FormView), je souhaite que les données entrées soient récapitulées sur une autre page (dans un DetailsView par exemple)

    Début de solution :
    (Pour l'exemple, je nommerais la page de mon formulaire 'page1.aspx' et le récapitulatif de celui-ci 'page2.aspx')

    Sur ma page 'page1.aspx' j'ai défini l'évènement oniteminserted="ValiderInsertion"

    Dans mon code behind, j'ai défini ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        protected void ValiderInsertion(object sender, FormViewInsertedEventArgs e)
        {
     
            Response.Redirect("page2.aspx"); // me renvoie bien sur la 'page2.aspx' , mais vide (logique) car comment récupérer l'ID ?
        }
    Enfin, sur ma page 'page2.aspx', j'ai effectué la requête suivante (pour afficher les données dans un DetailsView) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:csTest %>" 
            SelectCommand="SELECT * FROM [Contacts] WHERE ([id] = @id)">
            <SelectParameters>
                <asp:QueryStringParameter Name="id" QueryStringField="ID" Type="Int32" />
            </SelectParameters>
        </asp:SqlDataSource>

    Forcément, la page2.aspx ne me renvoie pas les données de mon formulaire, et j'aimerais connaître la syntaxe dans le code behind pour récupérer l'ID nouvellement créé.

    J'espère avoir réussi à me faire comprendre et vous remercie d'avance pour vos lumières !

    Cordialement,

    Japeth

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    bonjour,

    tu peux connaitre l'id de ton item inséré juste après l’insertion:
    http://sqlserver.developpez.com/faq/...mAuto#NumAuto2

    tu auras juste à le stocker dans ta page1 et de la transmettre à ta seconde page soit dans la redirection soit en le stockant en session... à toi de choisir:

    si tu veux le transmettre dans ta redirection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        protected void ValiderInsertion(object sender, FormViewInsertedEventArgs e)
        {
     
            Response.Redirect("page2.aspx?id="+id); 
        }
    et pour le récupérer dans la seconde page dans le page load tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    id=Request.QueryString["id"];

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Bonjour youtpout978 et merci pour ton aide. Etant novice en la matière, je suis encore un peu perdu !

    Il suffit de consulter la valeur de la variable de sessions @@IDENTITY juste après l'insertion, faire :

    Select @@Identity as Dernière_Valeur_AutoIncrémenté
    J'ai donc crée une procédure stockée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ALTER PROCEDURE dbo.NewPrestataire
     @nom_Prest nvarchar(50),
     @tel_Prest nvarchar(50),
     @type_Prest int,
     @id_Abrege int
     
    AS
     
      INSERT INTO [Prestataires]
      ([nom_Prest], [tel_Prest], [type_Prest], [id_Abrege]) 
      VALUES (@nom_Prest, @tel_Prest, @type_Prest, @id_Abrege)
     
     
    RETURN @@IDENTITY
    tu auras juste à le stocker dans ta page1
    Où dois-je faire la requête Select @@Identity as Dernière_Valeur_AutoIncrémenté ? (Procédure stockée, code behind ou directement dans ma page ?)

    si tu veux le transmettre dans ta redirection


    Dois-je déclarer la variable dans le page load (je suppose qu'ici, id = Dernière_Valeur_AutoIncrémenté) ?

    et pour le récupérer dans la seconde page dans le page load tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    id=Request.QueryString["id"];
    Il me renvoie encore une erreur
    Le nom 'id' n'existe pas dans le contexte actuel.
    Je suppose donc qu'il faut déclarer la variable 'id' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        protected void Page_Load(object sender, EventArgs e)
        {
            string id = Request.QueryString["ID"];   
        }
    Une fois toutes ces opérations effectuées, est-il nécessaire de rajouter dans ma page ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            <SelectParameters>
                <asp:QueryStringParameter Name="id" QueryStringField="ID" Type="Int32" />
            </SelectParameters>
    Je sais que je pose beaucoup de questions mais je ne suis pas encore très familier avec le langage et surtout le fait d'avoir à faire des liaisons entre BDD, code behind et mes pages.

    Merci d'avance, j'espère une fois de plus avoir réussi à me faire comprendre !

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    tu peux stocker ton id dans un champ caché sur ta page (une balise de type textbox par exemple qui est caché) ou déclarer une propriété
    tu peux faire ta requête dans ta procédure stockée je pense que les tutos ne manquent pas pour savoir comment récupérer le résultat

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    OK youtpout978, merci encore pour ta réponse. Je n'ai pas encore eu le temps de revenir dessus mais je vais m'y atteler et je viendrais poster ici ma solution.

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/04/2014, 15h46
  2. Réponses: 3
    Dernier message: 26/09/2011, 21h27
  3. Réponses: 7
    Dernier message: 18/01/2007, 15h03
  4. Réponses: 7
    Dernier message: 21/09/2006, 08h44
  5. Afficher les élements d'un formulaire dans une autre fenetre
    Par BernardT dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/12/2005, 22h52

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