none
Tableau c# RRS feed

  • Question

  • je voulais générer un tableau dont le nombre de ligne dépend d'une valeur saisie dans un TextBox et le nombre de colonne dépend du nombre de CheckBoxList cochés
    et je veux ensuite me servir des cellules de ce tableau comme des champs de saisie pour que l'utilisateur puisse introduire quelques valeur qui vont etre enregistrés dans ma base de données

    comment faire pour rendre les cellules du tableau des champs pour saisir les resultat?

    morennas

    dimanche 1 septembre 2013 18:29

Réponses

  • Bonjour,

    Ci-dessous une méthode que j'ai utilisé pour gérer dynamiquement mes datagrid non bindé à une datatable.

    il suffit d'appeler en passant les paramètres pour chaque colonne à ajouter.

    Il faudra retravailler un peu le code pour gérer les différents type de colonne, dans cet exemple, je n'en gère que 2.

    et il vous restera à gérer l'enregistrement dans la base de donnée.

            public static void dataGridViewDrawing(DataGridView _myDGV, string _cType, string _cName, string _cHeader, string _cVisible, string _cWidth, string _cAlignment, string _cReadOnly)
            {
                // dataGridView1.Columns[0].DefaultCellStyle.Format = "dd'/'MM'/'yyyy";
                // DataGridViewComboBoxColumn comboColumn;         // = new DataGridViewComboBoxColumn(); ref object obj, Type objtype, 
                DataGridViewCheckBoxColumn checkboxColumn;
                DataGridViewTextBoxColumn textboxColumn;        // = new DataGridViewTextBoxColumn();
                switch (_cType)
                {
                    case "B":
                        checkboxColumn = new DataGridViewCheckBoxColumn();
                        checkboxColumn.Name = _cName;
                        checkboxColumn.HeaderText = _cHeader;
                        if (int.Parse(_cWidth) > 0) checkboxColumn.Width = int.Parse(_cWidth);
                        checkboxColumn.Visible = bool.Parse(_cVisible);
                        checkboxColumn.ReadOnly = bool.Parse(_cReadOnly);
                        checkboxColumn.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        _myDGV.Columns.Add(checkboxColumn);
                        break;
                    default:
                        textboxColumn = new DataGridViewTextBoxColumn();
                        textboxColumn.Name = _cName;
                        textboxColumn.HeaderText = _cHeader;
                        if (int.Parse(_cWidth) > 0) textboxColumn.Width = int.Parse(_cWidth);
                        textboxColumn.Visible = bool.Parse(_cVisible);
                        textboxColumn.ReadOnly = bool.Parse(_cReadOnly);
                        textboxColumn.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        _myDGV.Columns.Add(textboxColumn);
                        break;
                }
    
    Cordialement,

    Jean PERIGNY, Développeur jperigny@hotmail.fr

    • Marqué comme réponse Aurel Bera mercredi 4 septembre 2013 13:27
    mercredi 4 septembre 2013 12:32

Toutes les réponses

  • Bonjour,

    Peut-être avec un DataGridView ? Voir par exemple : http://msdn.microsoft.com/fr-fr/library/5s3ce6k8(v=vs.90).aspx

    Dans cette exemple chaque ligne est un tableau différent mais je pense que cela fonctionne avec un tableau dont chaque élément est lui-même un tableau de cellules.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    dimanche 1 septembre 2013 20:45
    Modérateur
  • Bonjour

    Comme complément, je vous propose de utiliser le DataGridview bindée a un DataTable avec

    Nom_dgv.DataSource  =instance_dataTable .

    Ici vous avez les détails pour ajouter une colonne à un DataTable :

    http://msdn.microsoft.com/en-us/library/hfx3s9wd.aspx

    Pour l’ajout dans la BD ici vous avez les détails :

    http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.aspx

     Cordialement, 



    Aurel BERA, MSFT
    MSDN 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.

    lundi 2 septembre 2013 12:42
  • Bonjour,

    Est-ce que vous avez testé les solutions proposées ?

    Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.

    Cordialement,

    Aurel


    Aurel BERA, MSFT
    MSDN 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.

    mercredi 4 septembre 2013 09:17
  • Bonjour,

    Ci-dessous une méthode que j'ai utilisé pour gérer dynamiquement mes datagrid non bindé à une datatable.

    il suffit d'appeler en passant les paramètres pour chaque colonne à ajouter.

    Il faudra retravailler un peu le code pour gérer les différents type de colonne, dans cet exemple, je n'en gère que 2.

    et il vous restera à gérer l'enregistrement dans la base de donnée.

            public static void dataGridViewDrawing(DataGridView _myDGV, string _cType, string _cName, string _cHeader, string _cVisible, string _cWidth, string _cAlignment, string _cReadOnly)
            {
                // dataGridView1.Columns[0].DefaultCellStyle.Format = "dd'/'MM'/'yyyy";
                // DataGridViewComboBoxColumn comboColumn;         // = new DataGridViewComboBoxColumn(); ref object obj, Type objtype, 
                DataGridViewCheckBoxColumn checkboxColumn;
                DataGridViewTextBoxColumn textboxColumn;        // = new DataGridViewTextBoxColumn();
                switch (_cType)
                {
                    case "B":
                        checkboxColumn = new DataGridViewCheckBoxColumn();
                        checkboxColumn.Name = _cName;
                        checkboxColumn.HeaderText = _cHeader;
                        if (int.Parse(_cWidth) > 0) checkboxColumn.Width = int.Parse(_cWidth);
                        checkboxColumn.Visible = bool.Parse(_cVisible);
                        checkboxColumn.ReadOnly = bool.Parse(_cReadOnly);
                        checkboxColumn.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        _myDGV.Columns.Add(checkboxColumn);
                        break;
                    default:
                        textboxColumn = new DataGridViewTextBoxColumn();
                        textboxColumn.Name = _cName;
                        textboxColumn.HeaderText = _cHeader;
                        if (int.Parse(_cWidth) > 0) textboxColumn.Width = int.Parse(_cWidth);
                        textboxColumn.Visible = bool.Parse(_cVisible);
                        textboxColumn.ReadOnly = bool.Parse(_cReadOnly);
                        textboxColumn.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        _myDGV.Columns.Add(textboxColumn);
                        break;
                }
    
    Cordialement,

    Jean PERIGNY, Développeur jperigny@hotmail.fr

    • Marqué comme réponse Aurel Bera mercredi 4 septembre 2013 13:27
    mercredi 4 septembre 2013 12:32
  •  
    Bonjour

    Normalement, utiliser un dataset au dehors de DataGridView doit faire l'enregistrement dans la BD plus facile.

    Mais avec cette architecture très dynamique, vous devez toujours utiliser un SqlCommand.

    Cordialement,


    Aurel BERA, MSFT
    MSDN 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.

    mercredi 4 septembre 2013 13:08
  • Bonjour,

    oui, j'ai oublié de préciser, j'utilise un SqlCommand.

    Merci pour la remarque.


    Jean PERIGNY, Développeur jperigny@hotmail.fr

    mercredi 4 septembre 2013 13:12