Meilleur auteur de réponses
Afficher un tableau dynamiquement

Question
-
Bonjour,
J'ai une form avec un champ "Nombre" à saisir.
Quand l'utilisateur saisira ce nombre (exemple: 2), je voudrai qu'un tableau avec 2 lignes s'affiche afin que l'utilisateur puisse saisir ces 2 infos.
comment faire: quel contrôle utiliser pour ce genre de tableau dont on ne connaît pas le nombre de lignes à la création, et qui n'est liè à aucune source de données?
Merci
Réponses
-
Vous devez prendre un peu de recule.
Un contrôle GridView permet d'afficher les éléments dans une grille mais aussi dans ajouter ou dans supprimer.
Les éléments affichés dans une grille d'un contrôle GridView viennent d'une source de données et quand l'utilisateur ajoute ou supprimer une ligne via le contrôle, la source de données est directement notifiée de cette action. Elle fait les actions nécessaires au moment de ces notifications.
Au lieu de demander à l'utilisateur combien il veut de ligne, vous affichez une GridView vide et l'utilisateur ajoutera lui-même dans la grille de nouvelles lignes. Il pourra même en supprimer s'il le désire.
La taille du code à ajouter pour gérer les actions de l'utilisateur est nulle ou quasi-nulle, c'est juste affecter la DataSource du contrôle.
Si vous n'êtes pas à l'aise avec le DataBinding, l'exemple fourni dans le lien de mon post précédent n'utilise pas le DataBinding, tout à l'huile de coude, sauf l'affichage de la grille (houf).
Mais avec le DataBinding, c'est du tout automatique (ou presque). ;-)
Paul Bacelar, Ex - MVP VC++- Proposé comme réponse Ciprian Duduiala jeudi 26 janvier 2012 08:51
- Marqué comme réponse Ciprian Duduiala mercredi 1 février 2012 14:20
-
Merci, j'avais pas tout compris...
J'ai fait le test, ça marche très bien.
En fait, je prends le nombre de lignes que l'utilisateur a saisi et je rajoute autant de rows vides dans le datagrid.
Je marque comme réponse.
A+
- Marqué comme réponse bobinou65 jeudi 26 janvier 2012 10:41
Toutes les réponses
-
Quel technologie d'affichage ?
Win32SDK / MFC/ WTL / WinForms / WPF ????
"et qui n'est liè à aucune source de données"
C'est une erreur, créez la source de données après la réponse à la question nombre puis associez la source à votre contrôle.
Un simple tableau dynamique est déjà une source de données.
Pour ce type de besoin, je fais totalement différemment.
Je crée un contrôle WinForms de type GridView avec du DataBinding.
http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.aspx
Le contrôle affichera une grille vide au début, mais elle dispose de toutes les fonctionnalités nécessaires à l'ajout ou à la suppression d'un enregistrement ainsi qu'a l'affichage et l'édition de valeurs, Le tout avec le DataBinding .NET qui permet de valider ou transformer les données de la source.
Paul Bacelar, Ex - MVP VC++ -
C'est du winForms.
Je ne comprends pas votre réponse je n'ai pas de source de données à afficher dans ma liste.
En fait, les infos saisies dans les champs me permettent seulement de connaître des autres informations qui me serviront par la suite, quand je les récupererai, d'insérer des enregistrements dans une table.
Je voudrai simplement, quand l'utilisateur saisit "3" => afficher un tableau de 3 lignes, 1 colonne.
Merci
-
Vous devez prendre un peu de recule.
Un contrôle GridView permet d'afficher les éléments dans une grille mais aussi dans ajouter ou dans supprimer.
Les éléments affichés dans une grille d'un contrôle GridView viennent d'une source de données et quand l'utilisateur ajoute ou supprimer une ligne via le contrôle, la source de données est directement notifiée de cette action. Elle fait les actions nécessaires au moment de ces notifications.
Au lieu de demander à l'utilisateur combien il veut de ligne, vous affichez une GridView vide et l'utilisateur ajoutera lui-même dans la grille de nouvelles lignes. Il pourra même en supprimer s'il le désire.
La taille du code à ajouter pour gérer les actions de l'utilisateur est nulle ou quasi-nulle, c'est juste affecter la DataSource du contrôle.
Si vous n'êtes pas à l'aise avec le DataBinding, l'exemple fourni dans le lien de mon post précédent n'utilise pas le DataBinding, tout à l'huile de coude, sauf l'affichage de la grille (houf).
Mais avec le DataBinding, c'est du tout automatique (ou presque). ;-)
Paul Bacelar, Ex - MVP VC++- Proposé comme réponse Ciprian Duduiala jeudi 26 janvier 2012 08:51
- Marqué comme réponse Ciprian Duduiala mercredi 1 février 2012 14:20
-
Merci, j'avais pas tout compris...
J'ai fait le test, ça marche très bien.
En fait, je prends le nombre de lignes que l'utilisateur a saisi et je rajoute autant de rows vides dans le datagrid.
Je marque comme réponse.
A+
- Marqué comme réponse bobinou65 jeudi 26 janvier 2012 10:41