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

VB.NET Discussion :

Afficher des données dans un tableau


Sujet :

VB.NET

  1. #1
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 219
    Points : 69
    Points
    69
    Par défaut Afficher des données dans un tableau
    Bonjour, j'aimerais savoir comment faire pour afficher des données sous forme de tableau?

    Une fois que je les récupère je les affiche dans un TextBox mais je voudrais qu'elles s'affichent dans un tableau.De plus est-il possible que le tableau soit dynamique?

  2. #2
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut
    Utilise le contrôle datagridview, il est assez flexible et très utile pour afficher des données sous forme de tableau.


  3. #3
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 219
    Points : 69
    Points
    69
    Par défaut
    le souci c'est que je n'ai pas de BDD...les données que je veux afficher me sont envoyer par le serveur

  4. #4
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut
    Citation Envoyé par scarfunk Voir le message
    le souci c'est que je n'ai pas de BDD...les données que je veux afficher me sont envoyer par le serveur
    Tu n'as pas forcément besoin d'une BDD pour affiché des données dans une datagridview, tu peux rajouter les lignes manuellement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyDataGridView.Rows.Add()
    L'option

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyDataGridView.DataSource =
    reste une option.

    Tu peux donc directement affecter la valeur de tes cellules:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyDataGridView.Rows(i).Cells(j).Value =

  5. #5
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 219
    Points : 69
    Points
    69
    Par défaut
    ok merci je vais essayer

  6. #6
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut
    Bien évidement tu peux largement "bouclé" pour remplir ta datagridview.

  7. #7
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 219
    Points : 69
    Points
    69
    Par défaut
    j'ai essayé ça mais sa lui plait pas trop :S:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dim Tab() as string = split(data,SEP,,CompareMethod.text)
     
    for each Element in Tab
          DataGridView1.Rows(0).Cells(0).Value = Element
    Next

  8. #8
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut
    En effet, tout d'abord comment crée tu ta datagridview ? par le mode création ou par le code ?

    Je pense que ton problème c'est que la colonne "0" n'existe pas chez toi.

    En premier lieu, si c'est par le mode création, click droit sur ta datagridview, et ajouter des colonnes, là tu ajoute une colonne textbox.

    Si c'est par le code tu fais ça :

    Pour créer ta colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Friend WithEvents Version As DataGridViewTextBoxColumn
    Pour paramétrer ta colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            Me.Version = New DataGridViewTextBoxColumn
            Me.Version.HeaderText = "Version"
            Version.Width = 50
    Pour ajouter ta colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Columns.AddRange(Me.Version)
    Enfin bon c'est plus simple en mode création si tu débute en VB.

    Ensuite le soucis c'est que tu lui attribue (0) et (0), donc tu en définit que la cellule en haut à gauche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    dim Tab() as string = split(data,SEP,,CompareMethod.text)
     
    i = 0
     
    for each Element in Tab
     
          DataGridView1.Rows.Add()
          DataGridView1.Rows(i).Cells(0).Value = Element
          i = i + 1
     
    Next
    Je pense que ceci devrait marcher.

  9. #9
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 219
    Points : 69
    Points
    69
    Par défaut
    Merci ça marche seulement un petit soucis subsiste.
    Certaine des données que je reçcois change régulièrement et par conséquent le serveur m'envoie régulièrement (toutes les 5seondes par ex) ces données...
    Et donc le tableau n'arrête pas de créer des lignes

  10. #10
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 219
    Points : 69
    Points
    69
    Par défaut
    Voilà une démonstration en direct qui devrait t'éclaircir sur mon problème:

    http://samirlaabira.fr/stagee/tab.avi

  11. #11
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut
    Hum, dis moi comment tu déclenche le remplissage de ton tableau ? via un bouton, ou sur l'évènement de ta radiobutton je suppose ?

    Le problème en fait est qu'il serait plus simple de remplir une bonne fois pour toute ta table,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim Tab() as string = split(data,SEP,,CompareMethod.text)
    Ou sinon tu peux essayer ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                .AllowUserToAddRows = False
    Cette ligne de code est censé t'empecher de pouvoir rajouter des lignes.

    Ton serveur est censé continuer de t'envoyer des infos, mais c'est à toi de décider quand tu dois les afficher ou pas.

    PS : ce serait plus simple de voir ton code pour être honnête.

  12. #12
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 219
    Points : 69
    Points
    69
    Par défaut
    La table se remplit dès que je clique sur mon bouton.
    J'explique. j'ai une fonction qui formate les données (les met dans le tableau) qui sert uniquement à séparer mes infos.Ces infos me sont envoyées par le serveur sous forme de chaine de caractères avec un séparateur entre chaque mot.

    J'ai aussi créé une fonction recevoir qui permet de récupérer les données envoyé par le serveur.Dans celle-ci j'appelle MiseEnForme qui les met dans mon tableau...Je sais pas si tu a compris le principe

    Voila le code de la fonction MiseEnForme:
    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
     
    sub MiseEnForme(ByVal data As String)
     
            Dim Tab() As String = Split(data, SEP, , CompareMethod.Text)
            Dim i As Integer = 0
     
            'on affiche les données dans le tableau les données dans le tableau
            For Each Element In Tab
                DataGridView1.Rows(i).Cells(0).Value = i
                DataGridView1.Rows.Add()
                DataGridView1.Rows(i).Cells(1).Value = Element
                i = i + 1
            Next
     
    End Sub
    ET la ma fonction de réception:
    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
     
     
    Function recevoir() As String
     
            Dim returnData As String = Nothing
            Dim inStream(10024) As Byte
            Dim serverStream As NetworkStream
     
            If clientSocket.Connected Then
                Try
                    serverStream = clientSocket.GetStream()
                    'Lecture des données dans le flux
                    serverStream.Read(inStream, 0,
    CInt(clientSocket.ReceiveBufferSize))
                    returnData = System.Text.Encoding.ASCII.GetString(inStream)
     
                    Dim len As Integer = returnData.IndexOf("$")
     
                    If len < 0 Then
                        len = 0
                    End If
     
                    MiseEnForme(returnData)
     
                    returnData = returnData.Substring(0, len)
                Catch ex As Exception
                    msg(Donnees.ERR_REC)
                End Try
            End If
            Return returnData
     
        End Function

  13. #13
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut
    En fait je comprend pas trop la finalité de ce que tu veux faire ...

    As-tu essayé ce que je t'ai conseillé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      .AllowUserToAddRows = False
    Même si je pense que c'est ton server qui toutes les 5 secondes relance ton sub MiseenForme et donc forcément rajoute des lignes.

  14. #14
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 219
    Points : 69
    Points
    69
    Par défaut
    J'ai fais du mieux que j'ai pu pour que tu puisse comprendre ...
    J'ai aussi essayer ce que tu m'a dit mais ça me met une erreur.

    Il n'y a pas possibilité de le contourné?ou de lui empêcher de créer des lignes (autre que ta solution)

  15. #15
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut
    Bien sur qu'il y a une solution, mais vu que je ne comprend pas vraiment ce que tu veux faire, je ne peux pas vraiment t'aider.

    En gros,

    Ce que je te conseillerais de faire, c'est récupérer et trier tes infos provenant de ton serveur, esuite tu les met dans une table.

    Ensuite tu viens ajouter ces données dans ta datagrid. Et non tout dans le même sub. Tu as un flux infini, qui ajoute donc un nombre de ligne à l'infini.

    Ton souci c'est que tu ajoutes tes données dans la datagrid dans ton sub qui récupère les données, donc ta Tab() continue d'augmenter, et par conséquent la datagrid, il faut que tu définisse un "point d'arrêt" de récupération des données, que tu puisse redéclencher, c'est comme ça que ej vois le truc d'après ce que j'ai pu comprendre.

    Ou encore, tu peux regarder si la ligne dans Tab() ne t'intéresse pas tu ne l'affiche pas dans ta datagrid (par exemple en la filtrant si elle ne contient pas de string).

  16. #16
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut
    L'autre solution serait de connaître le nombre d eligne que tu veux afficher dans ta datagrid, et à ce moment là il serait fixé.

  17. #17
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 219
    Points : 69
    Points
    69
    Par défaut
    Voila justement mon autre problème c'est que je ne sais pas comment ni où stocker mes données...
    J'en ai parler dans un autre sujet:
    http://www.developpez.net/forums/d91...ckage-donnees/

Discussions similaires

  1. [WD10] Afficher des valeurs dans un tableau
    Par dj-julio dans le forum WinDev
    Réponses: 4
    Dernier message: 19/03/2014, 11h32
  2. Réponses: 1
    Dernier message: 28/08/2009, 02h45
  3. [MySQL] Stocker des données dans un tableau
    Par LadyArwen dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/02/2006, 10h40
  4. Réponses: 3
    Dernier message: 05/12/2005, 02h30
  5. [BDE] Afficher des données dans un TDBComboBox
    Par $grm$ dans le forum C++Builder
    Réponses: 6
    Dernier message: 30/09/2004, 10h37

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