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 :

[VB.NET] Confusion valeurs DataSet/DataGridView


Sujet :

VB.NET

  1. #1
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut [VB.NET] Confusion valeurs DataSet/DataGridView
    Bonjour,

    J'ai un datagridview.
    Pour ajouter deux colonnes (sous forme de cases à cocher après remplissage du DataSet ) je procède ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ....
    ds_liaisons.Tables(0).Columns.Add("Obligatoire", GetType(Boolean), "alobligatoire=1 OR alobligatoire=NULL")
    ...
    Et ça fonctionne très bien !

    Ce qui est bizzare, c'est que la vrai valeur de la colonne "alobligatoire" dans la table/dans la base de données est 0 et non pas NULL!

    Quand je remplace dans le code ci dessus NULL par 0 ca marche pas, ca donne n'importe quoi comme résultat!

    Avez vous une idée ? et pourquoi cette confusion entre NULL et 0 ?

    Merci

  2. #2
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    Bonjour,

    Si j'ai bien compris ton problème, il n y a pas de confusion, le truc c'est que le 3ème paramètre de la méthode Columns.Add qui est Expression sert à filtrer les lignes ou calculer les valeurs d'une colonne, dans ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "alobligatoire=1 OR alobligatoire=0")
    veux dire que c'est le champ alobligatoire est égale à "1" ou "0", la valeur du checkbox sera True, sinon s'il est différent de "1" et de "0", le checkbox aura comme valeur False.

    Si ce n'étais pas ça le problème, merci de nous préciser par un exemple le souci avec ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Redouane me = new Redouane();
    if (me.Connect())
        me.ShareInformations();

  3. #3
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut
    Merci Redouane,

    En fait j'essaie de lier les valeurs d'un champs à une datagrid "manuellement" , et les afficher sous forme de datagridview.

    Ce que je ne comprends pas c'est que dans mon champs ( dans la table de la base de données ) la colonne "alobligatoire" ne contient que des 0 ou des 1 et pas de null. alors quand j'essaie de la lier ( comme montrer dans mon code ) ca fonctionne et les valeurs s'affichent comme il faut si et seuelemnt si je considère que les 0 sont des null ( d'où vient l'expression alobligatoire = 1 Or alobligatoire = NULL ) , logiquement ca doit être ( alobligatoire = 1 Or alobligatoire = 0 )- normalement vu que les valeurs dans mon champs dans la table sont des 0 et des 1 ET NON PAS des NULL et des 1.

  4. #4
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    Pour moi, j'ai fait un petit exemple et ça marche chez moi :
    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
    Dim dt As DataTable = New DataTable()
     
    dt.Columns.Add("ID", GetType(Integer))
    dt.Columns.Add("value", GetType(Integer))
    dt.Columns.Add("Text", GetType(String))
    dt.Columns.Add("bool", GetType(Boolean), "value=1 or value=0")
     
     
    For i As Integer = 1 To 4
       dt.Rows.Add(i, 0, "libelle" + i.ToString())
    Next
     
    dt.Rows.Add(11, 1, "libelle11")
    dt.Rows.Add(12, 1, "libelle12")
     
    DataGridView1.DataSource = dt
    Dans mon cas, tt les cases à coucher sont séelectionnés (checked) et si je donne value null (value=1 or value=null) alors les cases de 1 à 4 seront découchés, car null n'existe pas.
    Vraiment, je ne vois pas pourquoi ça marche pas chez toi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Redouane me = new Redouane();
    if (me.Connect())
        me.ShareInformations();

  5. #5
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Quel est ton but premier ?

    Pourquoi positionnes-tu cette expression "alobligatoire=1 OR alobligatoire=NULL") ?

    Je ne comprends pas ce que tu cherches à faire.

    Peux-tu préciser cela ?

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  6. #6
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut
    Merci olsimar,

    Mon but premier, c'est de relier un champs booléen (d'une table X de ma base de données) à une datagridview, enfin l'afficher sous format de checkbox. si quelqu'un propose une meilleurs manière de faire je suis preneur.

    Mon datagridview est rempli via sa propriété "DataSource" par mon DataSet. Tout se passe bien, seules les cases à cocher me posait (avant) des problèmes pour les relier au champs voulu quand je les ajoutais en mode disign. pour contourner le problème, j'ajoute une colonne "manuellement" au DataSet au moment du chargement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ds_liaisons.Tables(0).Columns.Add("Obligatoire", GetType(Boolean), "alobligatoire=1 OR alobligatoire=NULL")
    donc le champs affiché c'est case à cocher, alors c bon, et la valeurs change selon si le champs de la base = 1 ou 0 , alors elle se coche ou se decoche.

    Ce que je ne comprends pas c'est que, cela marche dans le cas où j'attribue NULL à (alobligatoire) au lieu de 0 qui est sa "vraie" valeurs dans la table.

    Ce que je cherche, loin de ce que j'ai cité ci-dessus, c'est de pouvoir afficher des champs (souvent booléens) de ma table sous forme d'une cases à cocher dans mon datagridview, si vous avez une autre méthode "propre" je suis preneur. merci

  7. #7
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    Bnj,

    Dans ton cas, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ds_liaisons.Tables(0).Columns.Add("Obligatoire", GetType(Boolean), "alobligatoire=1")
    ça va donner des cases couchés pour les champs qui ont la valeur 1 (alobligatoire=1) et des cases découchés dans le cas contraire, ou que se soit 0, null ou n'importe quelle autre valeur que 1 ( alobligatoire=0 ou bien alobligatoire=NULL).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Redouane me = new Redouane();
    if (me.Connect())
        me.ShareInformations();

  8. #8
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut
    Merci Redouane,

    Et à part le problème cité en lui même, est -ce une bonne méthode pour relier les champs à des cases à cocher dans le grid ? à votre avis c'est une manière "propre"?

  9. #9
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    Oui, tu peux ajouter une colonne de type DataGridViewCheckBoxColumn à ton DataGridView et lui donner comme DataPropertyName = le nom de ton champ alobligatoire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      Dim column As New DataGridViewCheckBoxColumn()
            With column
                .HeaderText = "Obligatoire"
                .Name = "alobligatoire"
                .DataPropertyName = "alobligatoire"
                .AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells
                .CellTemplate = New DataGridViewCheckBoxCell()
            End With
            DataGridView1.Columns.Add(column)
    Cdt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Redouane me = new Redouane();
    if (me.Connect())
        me.ShareInformations();

  10. #10
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Je pense que pour ce que tu veux faire, il y a effectivement plus simple.

    Si tel que je le comprends, tu as défini une source de donnée pour le projet, dans visual studio, si tu vas sur l'onglet "sources de données" et que tu sélectionnes la source, puis la table, puis la colonnes, tu peux choisir le type de control qui sera associé à cette donnée.

    En visuel :

    Nom : Extsi.jpg
Affichages : 89
Taille : 28,0 Ko

    Aprés, si tu sélectionnes cette source de donnée dans le dgv, tu auras un checkbox sans avoir à faire plus.

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

Discussions similaires

  1. [VB.NET] Update DataSet/DatagridView
    Par tssi555 dans le forum VB.NET
    Réponses: 1
    Dernier message: 25/08/2009, 10h50
  2. [Vb.net] ligne du dataset
    Par prophetky dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/12/2005, 10h05
  3. [VB.NET] Partager un dataset entre 2 windows forms ???
    Par kissskoool dans le forum Windows Forms
    Réponses: 11
    Dernier message: 26/07/2005, 11h34
  4. [VB.NET] Alimenter un dataset avec une chaine XML...
    Par David.V dans le forum ASP.NET
    Réponses: 3
    Dernier message: 25/05/2004, 09h09
  5. [VB.net][PostgreSQL & ODBC] DataSet => NO_DAT
    Par rebolon dans le forum Accès aux données
    Réponses: 2
    Dernier message: 28/01/2004, 09h01

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