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 :

Navigation style WinForms entre les pages ASPX


Sujet :

ASP.NET

  1. #1
    Membre actif

    Inscrit en
    Novembre 2003
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 168
    Points : 232
    Points
    232
    Par défaut Navigation style WinForms entre les pages ASPX
    Bonjour,

    je voudrais réaliser en ASP.NET le cas suivant :
    Je suis sur une page où il y a un formulaire avec plusieurs champs, à côté du champ responsable j'ai mis une loupe qui lorsque l'utilisateur clique dessus ouvre une page "Sélection d'un responsable" où l'utilisateur peut effectuer une recherche puis cliquer sur le nom d'un responsable, ou sinon cliquer sur un bouton Fermer. Dans tous les cas il doit être retourné à la page du formulaire qu'il doit retrouvé dans l'état dans lequel il l'a laissé, en plus s'il a sélectionné un responsable ce dernier doit apparaitre dans le champ responsable du formulaire.

    La seule solution que j'ai trouvé actuellement est la suivante :
    En quittant la page (évènement SaveViewState) j'enregistre le contenu de tous les contrôles du formulaire ainsi que les variables globales de la page (dataset etc.) dans la session.
    Puis dans la méthode Load de la page, je vérifie une variable de session que j'aurais positionné au préalable, pour savoir si je dois ou non recharger les contrôles à partir de la session (et ainsi remettre la page en l'état).

    Je suis sûr que ce n'est pas la meilleure solution, ne serait-ce que parce que je dois enregistrer manuellement les valeurs de tous les champs dans la session, et cela semble faire un double emploi avec le ViewState !
    J'ai essayé d'utiliser le mode de persistance SessionPageStatePersister mais ça n'a rien réglé, à vrai dire je ne savais pas vraiment comment ça fonctionnait pour que je puisse l'utiliser à bon escient.

    Avez-vous une meilleure solution ou une piste à me proposer, je pense que c'est un cas fréquent dans le développement d'applications Web.

    Merci par avance

  2. #2
    Membre averti Avatar de flogreg
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 432
    Points : 392
    Points
    392
    Par défaut
    Tu peux tout faire dans la meme page en ajax.
    Tu as ton formulaire principale et quand tu clic sur ton bouton, une div contenant la liste des responsables apparait. Tu sélectionne ton responsable et tu met à jour ton champs responsable. Un peu comme une popup sans ses inconvénients.

  3. #3
    Membre actif

    Inscrit en
    Novembre 2003
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 168
    Points : 232
    Points
    232
    Par défaut
    Oui, mais ! Les deux pages en question sont données à titre d'exemple, or il s'agit d'une application avec un grand nombre d'écran et beaucoup de dépendances, le mieux serait aue je puisse naviguer entre les pages côté serveur !

    Que pensez-vous des applications monopage, avec une seule page ASPX, qui gère l'affichage de plusieurs controle ASCX où chaque contrôle représente un écran de l'application ?

  4. #4
    Membre averti Avatar de flogreg
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 432
    Points : 392
    Points
    392
    Par défaut
    Citation Envoyé par Benzeghiba Voir le message
    Oui, mais ! Les deux pages en question sont données à titre d'exemple, or il s'agit d'une application avec un grand nombre d'écran et beaucoup de dépendances, le mieux serait aue je puisse naviguer entre les pages côté serveur !

    Que pensez-vous des applications monopage, avec une seule page ASPX, qui gère l'affichage de plusieurs controle ASCX où chaque contrôle représente un écran de l'application ?
    si tu as beaucoup de controles ascx, je ne sais pas si c'est bien déjà mais c'est vite chiant.
    Sinon pour passer des paramètre entre plusieurs pages, tu peux utiliser :
    - paramètres dans l'url
    - paramètre dans le post
    - variables de sessions
    - viewstate
    Je ne sais pas si j'en ai oublié

  5. #5
    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
    Citation Envoyé par flogreg Voir le message
    si tu as beaucoup de controles ascx, je ne sais pas si c'est bien déjà mais c'est vite chiant.
    Sinon pour passer des paramètre entre plusieurs pages, tu peux utiliser :
    - paramètres dans l'url
    - paramètre dans le post
    - variables de sessions
    - viewstate
    Je ne sais pas si j'en ai oublié
    Nop, pas le ViewState

  6. #6
    Membre régulier Avatar de monstroplante
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 107
    Points : 76
    Points
    76
    Par défaut
    Pour passer des infos entre les pages, il y à aussi PreviousPage qui est utilisable dans les cas d'un Transfert ou d'un cross posting (PostBackUrl=...).

    Plus d'infos : http://msdn.microsoft.com/en-us/library/ms178139.aspx (en anglais)

    Pour ton problème de Popup, si j'ai bien compris ce que tu souhaite faire, il me semble qu'il serait plus intéressant d'utiliser JavaScript.

    Comme le sujet m'interesse, j'ai fait un petit exemple qui montre une façon de récupérer l'info d'une popup. Je profite également de cet example pour tester PreviousPage :

    Page1.aspx : Permet d'entrer un nom ou de rechercher à l'aide d'une popup.
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <%@ Page Language="C#" ClassName="Page1" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <script runat="server">
        protected void BT_SUBMIT_Click(object sender, EventArgs e) {
            Server.Transfer("Page2.aspx");
        }
    </script>
    <head>
        <script type="text/javascript">
            function ShowSearchPopup(){
                window.open ('PopupSearchName.aspx?targetfieldid=<%=TB_NOM.ClientID %>', 'nom_interne_de_la_fenetre', config='height=300, width=350, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, directories=no, status=no')
            }
        </script>
    </head>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <body>
        <form id="form1" runat="server">
            Votre nom svp : <asp:TextBox ID="TB_NOM" runat="server"></asp:TextBox>
            <a href="javascript:ShowSearchPopup()">Rechercher</a>
            <asp:Button ID="BT_SUBMIT" runat="server" Text="Envoyer (Server.Transfer(Page2))" 
                onclick="BT_SUBMIT_Click" />
            <asp:Button runat="server" PostBackUrl="~/Page2.aspx" Text="Envoyer (PostBackUrl=Page2)"/>
        </form>
    </body>
    </html>
    PopupSearchName.aspx : Popup de recherche de nom
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    <%@ Page Language="C#" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <script runat="server">
        System.Collections.Generic.List<string> _names = null;
        System.Collections.Generic.List<string> Names {
            get {
                if(_names==null)
                    _names = new System.Collections.Generic.List<string>(){"Titi", "Toto", "Tata", "Momo", "Mama"};
                return _names;
            }
            set {
                _names = value;
            }
        }
        string TargetFieldId {
            get { return Request.QueryString["targetfieldid"]; }
        }
        string _filter = "";
     
        protected void Unnamed1_Click(object sender, EventArgs e) {
            _filter = TB_FILTER.Text.ToUpper();
        }
        protected override void OnPreRender(EventArgs e) {
            RPT_NAMES.DataSource = Names.FindAll(delegate(string s) {
                return s.ToUpper().StartsWith(_filter);
            });
            RPT_NAMES.DataBind();
            base.OnPreRender(e);
        }
    </script>
    <head>
        <script type="text/javascript">
            function SetName(name){
                opener.document.getElementById('<%= TargetFieldId %>').value = name;
                window.close();
            }
        </script>
    </head>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <body>
        <form id="form1" runat="server">
        Commençant par <asp:TextBox ID="TB_FILTER" runat="server"></asp:TextBox>
        <asp:Button runat="server" Text="Filtrer" onclick="Unnamed1_Click" />
        <br />
        <asp:Repeater runat="server" ID="RPT_NAMES">
            <ItemTemplate>
                <a href="javascript:SetName('<%# Container.DataItem %>')"><%# Container.DataItem %></a><br />
            </ItemTemplate>
        </asp:Repeater>
        </form>
    </body>
    </html>
    Page2.aspx : Affichage des données de Page1 en passant par PreviousPage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <%@ Page Language="C#" ClassName="Page2"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <body>
        Salut <%=((TextBox)PreviousPage.FindControl("TB_NOM")).Text %> !
    </body>
    </html>

Discussions similaires

  1. pb de navigation entre les pages jsf !
    Par mido_bc dans le forum JSF
    Réponses: 4
    Dernier message: 05/02/2009, 16h49
  2. navigation entre les pages(WinForm)
    Par nashouille dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 26/08/2008, 13h52
  3. identification utilisateur et la navigation entre les pages
    Par montassar.nizar dans le forum JDeveloper
    Réponses: 2
    Dernier message: 08/05/2008, 12h26
  4. [VB.NET] Liaison entre les pages aspx et vb
    Par cosmos38240 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 18/03/2005, 12h55

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