none
DataGridView + boolColoumn RRS feed

  • Question

  •  

    Salut,

     

    je veux faire une fonction pour mon dataGridView. Colonne de suppression, principe est simple:

     

    pour chaque ligne, ajoute une colonne "supression" checkable.

     

    Voici mon code:

    private void delInfo()

    {

    for (int i = 0; i < dataGridView1.RowCount; i++)

    {

    DataGridBoolColumn delinfo = new DataGridBoolColumn();

    delinfo.HeaderText = "Suppression";

    delinfo.FalseValue = true;

    }

    }

     

     

    Je voudrais maintenant appellé cette fonction delInfo():

     

    voici un exemple:

     

    private void frmPrincipal_Load(object sender, EventArgs e)

    {

    cGestClient.viewClient();

    myDataView = dataBase.myDataTable.DefaultView;

    this.dataGridView1.DataSource = myDataView;

    delInfo(); //Ici

    cGestClient.UpdateHeaders(ref this.dataGridView1, new string[] { "id", "district", "addressType", "googlePoint" });

    //cGestClient.UpdateHeaders(ref this.dataGridView1); //pour rien masquer

    }

     

    résultat:

     

    pas d'erreur de compilation, mais pas de colonne de supression. :/

     

    comment avoir ceci? :}

     

    Bon appetit

    mercredi 27 août 2008 09:24

Toutes les réponses

  • Ben 2 choses à dire vite fait sur le gaz.

    Tout d'abord pourquoi tu rajoutes pas ça une seule fois ? (sur la gridview comme je t'ais montré il y a longtemps?)

     

    ensuite si tu veux vraiment le faire comme tu le montres à mon avis il te manque un petit quelque chose pour ajouter la colonne à la row genre dataGridView1.columns.add(delinfo) (fait gaffe c'est pas forcément le bon code mais juste le principe ici)

     

    Si tout va bien j'aurai un peu de temps vers 16h!

     

    mercredi 27 août 2008 12:31
  • Bonjour,

     

    Le code suivant est incorrect :

     

    Code Snippet

    for (int i = 0; i < dataGridView1.RowCount; i++)

    {

    DataGridBoolColumn delinfo = new DataGridBoolColumn();

    delinfo.HeaderText = "Suppression";

    delinfo.FalseValue = true;

    }

     

     

    Vous créez autant de colonnes que de lignes dans votre DataGridView.

     

    Cordialement

    mercredi 27 août 2008 20:57
    Modérateur
  • J'ai eut un doute du coup et j'ai testé.

    Oui tu crées des colonnes en effet mais elle n'apparaitront nulle part puisque que tu ne les attaches à rien (et là en plus elles n'existent plus une fois sortie de la boucle)

     

    A moins que je ne comprenne plus rien (trop de vacances ?), la question de mogway qui s'étonne de ne pas voir sa colonne me fait penser que sa question n'était pas de créer autant de colonne qu'il y a de row (ce que fait très bien ce code ) mais plutôt de rajouter une colonne supprimer visible à chaque ligne (à ce moment là je ne pense pas que DataGridBoolColumn soit la meilleure façon de faire)

     

    Mogway tu peux nous préciser histoire qu'on te réponde ?

     

    En attendant la doc MSDN (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.datagridboolcolumn.aspx) explique pas mal cet objet et comment l'utiliser

    jeudi 28 août 2008 07:15
  • Bonjour,

     

    Oui tu crées des colonnes en effet mais elle n'apparaitront nulle part puisque que tu ne les attaches à rien (et là en plus elles n'existent plus une fois sortie de la boucle)

     

    Oui, en effet, je n'avais pas remarqué que les colonnes n'étaient pas ajouté dans la collection DataGridView.Columns.

     

    Cordialement 

     

    jeudi 28 août 2008 09:56
    Modérateur
  • Salut,

     

    Bon, j'ai pu rajouter une colonne checkable, sauf que les box à checker ne peuvent pas être checker, jvous mets ici un screenShot des composants:

     

    http://img205.imageshack.us/my.php?image=checkablequ4.png

     

    Il n'y a pas de code spécifique que j'aie créé.

     

     

    EDIT: A savoir que quand je clic sur une cellulle, toute la ligne se sélectionne. Est-ce possible que sa vienne de la? Si oui comment faire pour que la colonne de suppression ne se sélectionne pas?

     

     

    Meilleure salutations !

     

    vendredi 29 août 2008 06:35
  • Bonjour,

     

    Dans votre DataGridView qu'elle sont les valeurs des propriétés :

    • ReadOnly ?
    • SelectionMode ?

     

    Cordialement

    lundi 1 septembre 2008 13:40
    Modérateur
  • En repartant de l'exemple que j'ai donné ce matin à saben 87 j'ai créé une colonne par la datatable et une en rajoutant une colonne comme toi.

    J'ai joué avec le sélectionMode de mon gridview, regardé les propriétés importantes de imageshack mais je n'ai pas réussi à reproduire ton problème.

     

    Peut être est ce dû en effet à une autre propriété du datagridView comme le suggère Gilles.

     

    PS: tu ne regardes pas à tes mails ? (ce matin j'avais un peu de temps pour SharedView)

    lundi 1 septembre 2008 13:54
  •  Gilles TOURREAU A écrit:

    Bonjour,

     

    Dans votre DataGridView qu'elle sont les valeurs des propriétés :

    • ReadOnly ?
    • SelectionMode ?

     

    Cordialement

     

    ReadOnly a true

    SelectionMode a fullRowSelect

     

    J'ai été regarder son code, voici le mien:

     

    //D‚velopemment d'une colonne de suppression

    DataTable dt = new DataTable();

    dt.Columns.Add(new DataColumn("Suppression"));

     

    Mets elle n'apparait pas dans ma grille (j'ai mis dans le Form_load), de plus, ou est-ce que je lui spécifie que c'est une booléan que je veux?

     

    Meilleure salutations

    mercredi 3 septembre 2008 05:06
  • Cela ne changera rien puisque tu as read only à true. C'est ce que tu dois changer.

     

    Pour le fait qu'elle n'apparaisse pas c'est parce que tu devrais le faire sur ta table et pas sur dt:

     

    myDataView.columns.Add(new DataColumn("Suppression"));

    juste avant le :

    this.dataGridView1.DataSource = myDataView;

     

    et pour préciser le type c'est

    myDataView.columns.Add(new DataColumn("Suppression"), System.Type.GetType("System.Boolean"));

    (A 2 trois majuscules près car je l'ai tapé de mémoire. si ça marche pas je ferai un projet pour vérifier)

    mercredi 3 septembre 2008 09:33
  • Salut,

     

    J'ai pu corrigé, il me le mettait à chaque fois en true, meme quand je mettais false, j'ai du le mettre dans le code.

     

    Coont je récupèe maintenant les données checker pour les mettre dans mon txtBox de la fenetre précédente ?

     

    Bon ap !

     

    mercredi 10 septembre 2008 09:53