Meilleur auteur de réponses
Tableau c#

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
comment faire pour rendre les cellules du tableau des champs pour saisir les resultat?
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
morennas
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
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".
-
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. -
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. -
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
-
BonjourNormalement, 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. -