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 :

créer une variable tableau sur le poste client et pas sur le serveur


Sujet :

ASP.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut créer une variable tableau sur le poste client et pas sur le serveur
    Bonjour,

    J'ai développé une application intranet ASP.net qui crée une variable de type tableau static de type DataTable lorsque l'utilisateur se connecte, ce tableau stock des datatables issues des requêtes dont le paramètre est le nom d'utilisateur (la procédure de création du tableau est dans un module est pas dans une page), le problème est que lorsque un autre utilisateur se connecte depuis un autre poste ce tableau se réinitialise avec les données du 2éme utilisateur et le premier est supprimé est ce que c'est normal ?

    comment faire pour créer ce tableau sur le poste client et pas sur le serveur ?

    Merci

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Peux-être parce que ton tableau est static...(voir ici pourquoi)
    Si tu veux stocker tes datatables pour chaque utilisateur tu as plusieurs choix.

    1. Tu mets les datatables dans une session mais ca veux dire que si un utilisateur se connecte avec 2 navigateurs différent il y aura 2 sessions...donc 2x tes datatables.
    2. Sauver les datatables dans la cache en spécifiant dans la key (de la cache) l'id de l'user de cette facon ta ressource serait partager peux importe le nombre de sessions ouvertes pour le même user.

    A+

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut créer une variable tableau sur le poste client et pas sur le serveur
    Merci pour vôtre réponse j'ai bien compris qu'une variable static peut être partagée par tous les utilisateurs
    je vais essayé vôtre 1ére solution
    A +

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    ça marche trés bien Merci

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Citation Envoyé par Mamoun110 Voir le message
    ça marche trés bien Merci
    n'oublies pas qu'une session à une expiration...

  6. #6
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Oui je sais ,Il y a une autre session Session("EtatConnexion") = "Identifie" crée une fois l'utilisateur est connecté
    ainsi si cette fonction expire l'utilisateur est appelé à s'identifier une autre fois et la session DTables est recrée

    en + je recrée la session DTables chaque fois que la fonction est appelée et il y a l'ajout d'une nouvelle datatable

    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
     Public Function DTable(ByVal Nom As String, Optional ByVal DtTable As DataTable = Nothing) As DataTable
     
            Dim DTables() As DataTable = CType(HttpContext.Current.Session("DTables"), Array)
            Dim DTablesNames() As String = CType(HttpContext.Current.Session("DTablesNames"), Array)
     
            If DTablesNames Is Nothing Then
                If DtTable Is Nothing Then
                    Return Nothing
                Else
                    ReDim DTables(0)
                    ReDim DTablesNames(0)
                    DTablesNames(0) = Nom
                    DTables(0) = DtTable
                    HttpContext.Current.Session("DTables") = DTables
                    HttpContext.Current.Session("DTablesNames") = DTablesNames
                    Return DTables(0)
                End If
            Else
                x = Array.IndexOf(Of String)(DTablesNames, Nom)
                If x > -1 Then
                    If Not DtTable Is Nothing Then
                             DTables(x) = DtTable
                    End If
                    HttpContext.Current.Session("DTables") = DTables
                    Return DTables(x)
                Else
                    If DtTable Is Nothing Then
                        Return Nothing
                    Else
                        x = UBound(DTablesNames) + 1
                        ReDim Preserve DTables(x)
                        ReDim Preserve DTablesNames(x)
                        DTablesNames(x) = Nom
                        DTables(x) = DtTable
                        HttpContext.Current.Session("DTables") = DTables
                        HttpContext.Current.Session("DTablesNames") = DTablesNames
                        Return DTables(x)
                    End If
                End If
            End If
     
        End Function

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

Discussions similaires

  1. Impossible de créer une ODBC à partir d'un poste client
    Par Yodaladouda dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/09/2012, 16h14
  2. Réponses: 0
    Dernier message: 15/08/2012, 22h22
  3. Créer une variable de session si elle n'existe pas
    Par Augustule dans le forum Langage
    Réponses: 2
    Dernier message: 09/05/2011, 17h46
  4. mde n'ouvre pas sur le poste client 2003
    Par gorjette dans le forum Runtime
    Réponses: 1
    Dernier message: 03/12/2010, 18h53
  5. [Silverlight] XAP hébergé sur le poste client ou pas ?
    Par cnguyen dans le forum Silverlight
    Réponses: 5
    Dernier message: 24/01/2010, 21h21

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