none
aficher les donnes dans un datagridview RRS feed

  • Question

  • bonjour a tous

    j'ai un dataGridView qui est connecté a un dataTable avec plusieur colonnes.

    une des collones dans le dataTable est un int qui represent le numero du jour.

    j'ai besoin que le dataGridVuew ne montre pas ce int mais le transforme en date

    dans le programme j'ai une fonction qui le transforme en date (ce qui depend de la culture etc.) mais comment j'appaile cette fonction?

    (je ne veus pas rentrer la date elle meme dans la colonne, par ce que la forme de la date change)

    merci d'avance



    lundi 31 août 2015 21:04

Réponses

Toutes les réponses

  • Bonjour

    L'intérêt de mapper directement un datagridView sur une DataTable et qu'il y a un héritage automatique des types de données, ainsi que l'alimentation de la datagridview. 

    Du coup, s'il y a une différence entre ce qui est souhaité dans le datagridview et ce qu'il y a dans le datatable, il faut alimenter le datagridview via une fonction "maison" de ce type :

    private void DesignDataGridAddData(ref DataGridView p_oDataGrid, DataTable p_oDataTable )
            {
                p_oDataGrid.Rows.Clear();
                int idxRow = 0;
                int idxColumn = 0;
                int idxMaxColumn = p_oDataTable.Columns.Count;
                foreach (DataRow oDataRow in p_oDataTable.Rows)
                { 
                    p_oDataGrid.Rows.Add();
                    while (idxColumn < idxMaxColumn)
                    {
                        p_oDataGrid.Rows[idxRow].Cells[idxColumn].Value = oDataRow.ItemArray[idxColumn];
                        idxColumn += 1;
                    }
                    idxColumn = 0;
                    idxRow += 1; 
                } 
            }

    Et dans votre cas, au niveau de cette commande : 

     p_oDataGrid.Rows[idxRow].Cells[idxColumn].Value = oDataRow.ItemArray[idxColumn];
    
    Il faut rajouter une condition afin de détecter le cas qui correspondra à la colonne que vous souhaitez modifier.

    • Proposé comme réponse Grégory_Nail mercredi 2 septembre 2015 06:59
    mardi 1 septembre 2015 06:48
  • merci

    donc si j'ai bien compris

    on peus pas utiliser le mechanizm automatic ici

    et je serai obliger de rentrer les donnes mannuelment

    mardi 1 septembre 2015 21:09
  • Je pense que oui, car on ne peut pas faire de l'automatique avec des particularités.
    mercredi 2 septembre 2015 06:59
  • Chaque colonne du datagrid contient un style
    GRIDdocument.Columns[5].DefaultCellStyle

    Dans ce style vous pouvez définir un convertisseur pour l'affichage
    GRIDdocument.Columns[5].DefaultCellStyle.FormatProvider

    Cordialement
    Gérard

    mercredi 2 septembre 2015 08:34
  • d'abord merci

    j'ai essayer' et ca ne marche pas!

    je crois que a raison est que ma trasformation de donne n'est pas une culture - mais une fonction a moi

    et on dirais que le datatgrid est d'accord de changer son foramteur que pour une culture

    j'ai essayer do construire un customformater mais ca n'a aucun effet




    mercredi 2 septembre 2015 23:01
  • j'ai reussi!

    il fallait simplement utiliser le "event" CellFormatting

    • Marqué comme réponse chmouel kalifa mercredi 9 septembre 2015 21:37
    mercredi 9 septembre 2015 21:36
  • Bonjour, chmouel kalifa,

    Je vous remercie d'avoir partagé cette solution avec la communauté du forum.

    Cordialement,
    Teodora


    Votez! Appel à la contribution TechNet Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    jeudi 10 septembre 2015 16:29
    Modérateur