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 :

[VB.NET]Créer une instance par page


Sujet :

ASP.NET

  1. #1
    Dnx
    Dnx est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 290
    Points : 154
    Points
    154
    Par défaut [VB.NET]Créer une instance par page
    bonjour,

    j'ai une page qui affiche 10 artistes et lorsqu'on clique sur un artiste, je lance un popup avec les détails de cet utilisateur.

    et via cette fiche détail, on peut écouter sa musique ou sa vidéo
    donc c'est à partir de cette fiche que les informations partent pour lancer une vidéo ou un son.
    mais le problème c'est que lorsque je lance 5 fiches, 5 pages sont affichées mais lorsque je clique sur une vidéo ou son d'une fiche, c'est la vidéo ou son de la dernière fiche chargée qui est jouée.

    en effet, c'est logique vu que c'est une même page qui est utilisée pour charger les détails d'un artiste et donc les variables sont les mêmes pour tous.

    donc j'aimerais si possible de pouvoir instancier de manière unique chaque fiche détail lancée.

    merci d'avance

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Shared FromTruc(blablabla) As Artiste
       Return New Artiste(blablabla)
    End Sub
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut Re: [VB.NET]Créer une instance par page
    Citation Envoyé par Dnx
    en effet, c'est logique vu que c'est une même page qui est utilisée pour charger les détails d'un artiste et donc les variables sont les mêmes pour tous.
    Euh non. Ce sont des exécutions différentes, des instances différentes de la même classe, des valeurs de champs différents.

    Ça sent davantage l'abus de session qu'autre chose...
    Be wary of strong drink.
    It can make you shoot at tax collectors, and miss.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 100
    Points : 93
    Points
    93
    Par défaut Re: [VB.NET]Créer une instance par page
    Citation Envoyé par Maniak
    Citation Envoyé par Dnx
    en effet, c'est logique vu que c'est une même page qui est utilisée pour charger les détails d'un artiste et donc les variables sont les mêmes pour tous.
    Euh non. Ce sont des exécutions différentes, des instances différentes de la même classe, des valeurs de
    champs différents.
    ..
    Ouf çà me rassure, j'était pris d'un doute quelque instant

  5. #5
    Dnx
    Dnx est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 290
    Points : 154
    Points
    154
    Par défaut
    Citation Envoyé par neguib
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Shared FromTruc(blablabla) As Artiste
       Return New Artiste(blablabla)
    End Sub
    je ne comprends pas très bien ton code...

    peux-tu m'expliquer un peu plus en détail, stp?

    merci

  6. #6
    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
    Pourquoi tu passes pas comme paramètre à ta pop up l'id de l'artiste et après la pop up fais son truc à elle

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 21
    Points : 22
    Points
    22
    Par défaut
    Pourrais tu poster le bout de code qui lance ton son ou ta video
    (j immagine qu 'il sagit d'un lien ou d'un bouton sur ta fiche)

  8. #8
    Dnx
    Dnx est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 290
    Points : 154
    Points
    154
    Par défaut
    ben c'est ce que je fais, je luis passe 3 paramètres
    mais c'est assez subtile

    des le chargement du popup, il fait plein de requetes sql pr afficher les données
    puis je stock ces données dans des variables "shared" afin de les réutiliser dès que je clique sur un bouton
    par exemple, lorsque je vais cliquer sur "play" il va chercher la variable "file2play" qui contiendra le fichier a jouer vu que lors du page_load il aura fait sa requete SQL pr récupérer ces données.

    il y a une méthode qui peut-être va marcher c'est qu'a chaque fois qu'il passe par la page_load, il refait un querystring des paramètres de la popup puis dans la SUB du button_click, refaire une requete sql pr récuperer le fichier a jouer mais ca me semble lourd...

  9. #9
    Dnx
    Dnx est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 290
    Points : 154
    Points
    154
    Par défaut
    Citation Envoyé par Mouss26
    Pourrais tu poster le bout de code qui lance ton son ou ta video
    (j immagine qu 'il sagit d'un lien ou d'un bouton sur ta fiche)
    voila le code qui lance les 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
     
                        With sb
                            .Remove(0, .Length)
                            .Append("<script language=javascript>window.open(""OeuvreDetail.aspx?interprete=")
                            .Append(interpreteOnDatagrid.Text)
                            .Append("&title=")
                            .Append(titleOnDatagrid.Text)
                            .Append("&idoeuvre=")
                            .Append(idOeuvreOnDatagrid.Text)
                            .Append(""",")
                            .Append(Session("OeuvreDetailLaunched"))
                            .Append(" ,""height = 375, width= 710, status=yes,toolbar=no,menubar=no,location=no,resizable=no,directories=no,scrollbars=no"");</script>")
                            Session("OeuvreDetailLaunched") += 1
                            RegisterClientScriptBlock("Oeuvre", .ToString)
                        End With
    code de la page detail.aspx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
            If Not IsPostBack Then
     
                ArtistLoaded = Request.QueryString("interprete")
                TitleLoaded = Request.QueryString("title")
                idOeuvreLoaded = Request.QueryString("idoeuvre")
     
               'requetes sql etc...
          end if
    code du bouton qui lance la vidéo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            Dim sb As New System.Text.StringBuilder
     
            With sb
                .Append("<script language=javascript>window.open(""StreamMPG.htm?param1=")
                .Append(path2MPG)
                .Append(""" , ""MPG""")
                .Append(",""width = 370px, height = 340px, status=no,toolbar=no,menubar=no,location=no,resizable=no,directories=no,scrollbars=no"");</script>")
                RegisterClientScriptBlock("MPG", .ToString)
            End With

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 21
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par Dnx
    puis je stock ces données dans des variables "shared" afin de les réutiliser dès que je clique sur un bouton
    Et tu t étonnes que toutes tes fiche joue le même morceau ?????!!!!!!!!

  11. #11
    Dnx
    Dnx est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 290
    Points : 154
    Points
    154
    Par défaut
    ben oui, mais comment veux-tu les garder en mémoire?
    car quand tu stockes dans une private artist as string
    des que tu click sur un bouton événement
    artist vaut "nothing"...

  12. #12
    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 Dnx
    ben oui, mais comment veux-tu les garder en mémoire?
    car quand tu stockes dans une private artist as string
    des que tu click sur un bouton événement
    artist vaut "nothing"...
    ya un pb de conception là

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 21
    Points : 22
    Points
    22
    Par défaut
    Plusieurs moyens :
    • Session
    • ViewState
    • Cookie
    • ...


    Dans ton cas je mettrai dans le viewstate ... c est ca qu il me semble le +approprié dans ce cas ci

  14. #14
    Dnx
    Dnx est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 290
    Points : 154
    Points
    154
    Par défaut
    heuu comment tu utilises les viewstate dans ce cas ci justement, je n'ai jamais touché a ca auparavant :/

    merci

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 21
    Points : 22
    Points
    22
    Par défaut
    C'est assez simple ...
    En reprenenat un bout de ton code :
    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
     
    If Not IsPostBack Then
     
       ArtistLoaded = Request.QueryString("interprete")
       TitleLoaded = Request.QueryString("title")
       idOeuvreLoaded = Request.QueryString("idoeuvre")
     
       'mettre les valeur dans le viewstate
       ViewState("ArtistLoaded") = ArtistLoaded
       ViewState("TitleLoaded ") = TitleLoaded 
       ViewState("idOeuvreLoaded ") = idOeuvreLoaded 
     
       'requetes sql etc...
    end if 
     
    'recupérer les valeur du viewstate
       ArtistLoaded = ViewState("ArtistLoaded")
       TitleLoaded = ViewState("TitleLoaded ")
       idOeuvreLoaded = ViewState("idOeuvreLoaded ")

  16. #16
    Dnx
    Dnx est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 290
    Points : 154
    Points
    154
    Par défaut
    aaah ca marche super bien !!!En plus ca marche comme les variables de session...

    et ca le fait!!!

    merci bcp!

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par Dnx
    puis je stock ces données dans des variables "shared"
    Ah ben j'ai été trop optimiste en pensant à un abus de session. Un abus de variables statiques, surtout en ASP.NET, c'est pire :)

    (ah, quelqu'un peut m'expliquer l'intérêt de se taper ce foutu viewstate pour un passage de 3 pauvres valeurs à une pauvre page ?)
    Be wary of strong drink.
    It can make you shoot at tax collectors, and miss.

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 21
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par Maniak
    (ah, quelqu'un peut m'expliquer l'intérêt de se taper ce foutu viewstate pour un passage de 3 pauvres valeurs à une pauvre page ?)
    ben le viewstate est de toute manière présent dans les page aspx ... donc ce n est pas en rajoutant qq octect a ta page que ca va freiner ton transfert vers le client

    et ici j ai choisi d utiliser le viewstate justement pcq il n y a que 3 variables à retenir par page ...
    ... tandis que si j avais utilisé les session ... j aurais eu 3*nbPage variable à retenir ... plus faire une petite gymnastique pr savoir de quelle page je demande la variable idOeuvreLoaded (par ex.)

    Et comme ces variables ne doivent pas etre sécurisés à fond (l'utilisateur pourrait meme le voir en clair !), je peux les stocké du coté client

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par Mouss26
    ben le viewstate est de toute manière présent dans les page aspx...
    Manquerait plus que ça :)
    Ça se désactive très bien hein, c'est même conseillé par MS pour les pages qui n'en ont pas besoin :)

    Citation Envoyé par Mouss26
    donc ce n est pas en rajoutant qq octect a ta page que ca va freiner ton transfert vers le client
    Quelques octets non. Mais le viewstate a tendance à prendre beaucoup de place très vite, pour rien. + le temps de le générer/décomposer à chaque fois, pour rien.

    Citation Envoyé par Mouss26
    et ici j ai choisi d utiliser le viewstate justement pcq il n y a que 3 variables à retenir par page ...
    ... tandis que si j avais utilisé les session ...
    Et la méthode normale, ça ne va pas ? :)
    (méthode normale = querystring ou formulaire GET/POST donc :)


    Tu as une page qui en appelle une autre en lui passant 3 petits paramètres. D'un côté, tu balances directement un lien vers la page en question en mettant les paramètres dedans. De l'autre, tu les colles dans le viewstate sur la première page et tu les récupères depuis le viewstate sur l'autre...

    J'ai du mal à trouver que la solution viewstate est la plus simple. En plus d'empêcher d'accéder manuellement à la page appelée en y passant des paramètres lambda pour tester.

    Pouvoir tester ses pages sans avoir à passer par 10 autres pages histoire d'avoir les bonnes valeurs en viewstate+session, j'ai tendance à trouver ça bien :)
    Be wary of strong drink.
    It can make you shoot at tax collectors, and miss.

  20. #20
    Dnx
    Dnx est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 290
    Points : 154
    Points
    154
    Par défaut
    Citation Envoyé par Maniak
    Citation Envoyé par Mouss26
    ben le viewstate est de toute manière présent dans les page aspx...
    Manquerait plus que ça
    Ça se désactive très bien hein, c'est même conseillé par MS pour les pages qui n'en ont pas besoin

    Citation Envoyé par Mouss26
    donc ce n est pas en rajoutant qq octect a ta page que ca va freiner ton transfert vers le client
    Quelques octets non. Mais le viewstate a tendance à prendre beaucoup de place très vite, pour rien. + le temps de le générer/décomposer à chaque fois, pour rien.

    Citation Envoyé par Mouss26
    et ici j ai choisi d utiliser le viewstate justement pcq il n y a que 3 variables à retenir par page ...
    ... tandis que si j avais utilisé les session ...
    Et la méthode normale, ça ne va pas ?
    (méthode normale = querystring ou formulaire GET/POST donc


    Tu as une page qui en appelle une autre en lui passant 3 petits paramètres. D'un côté, tu balances directement un lien vers la page en question en mettant les paramètres dedans. De l'autre, tu les colles dans le viewstate sur la première page et tu les récupères depuis le viewstate sur l'autre...

    J'ai du mal à trouver que la solution viewstate est la plus simple. En plus d'empêcher d'accéder manuellement à la page appelée en y passant des paramètres lambda pour tester.

    Pouvoir tester ses pages sans avoir à passer par 10 autres pages histoire d'avoir les bonnes valeurs en viewstate+session, j'ai tendance à trouver ça bien
    je ne vois pas très bien ce que tu veux faire.
    dans mon cas, (je ne suis pas un expert en asp.net, vous ne me le contre direz pas)mais le viewstate est très bien adapté.

    Mais si tu as une solution qui fait la meme chose et qui, au niveau perf', donne de meilleurs résultats, je suis preneur

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Comment faire pour créer une instance par item de liste ?
    Par pulsart06 dans le forum Général Python
    Réponses: 5
    Dernier message: 03/05/2012, 21h45
  2. créer une instance par introspection
    Par PoichOU dans le forum Langage
    Réponses: 2
    Dernier message: 10/01/2008, 13h10
  3. [POO] Créer une instance d'un objet par la valeur d'une variable
    Par philworks dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/11/2007, 14h27
  4. Réponses: 13
    Dernier message: 27/11/2006, 11h17
  5. Réponses: 5
    Dernier message: 17/07/2006, 18h34

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