J'ai lié le contrôle DataGridView à la collection List. Ainsi, je peux éditer des éléments de la collection. Est-il possible d'activer la suppression et l'ajout d'éléments à la collection à l'aide de cette grille?Ajout d'éléments à la collection via DataGridView
Répondre
Le générique List<T>
ne prend pas complètement en charge la liaison au DataGridView
, comme vous pouvez le constater, vous pouvez modifier les éléments de la liste sans les ajouter ni les supprimer. Ce que vous devez utiliser est BindingList<T>
ou BindingSource
.
Le BindingList<T>
vous permettra d'utiliser l'interface utilisateur pour ajouter et supprimer des lignes de la grille - lorsque vous changez DataSource
pour cela, vous verrez la nouvelle ligne vide au bas de la grille. Vous ne pouvez toujours pas ajouter ou supprimer des lignes par programmation. Pour cela, vous avez besoin d'un BindingSource
.
Un exemple des deux est ci-dessous (en utilisant un exemple de classe Users, mais le détail de ce n'est pas important ici).
public partial class Form1 : Form
{
private List<User> usersList;
private BindingSource source;
public Form1()
{
InitializeComponent();
usersList = new List<User>();
usersList.Add(new User { PhoneID = 1, Name = "Fred" });
usersList.Add(new User { PhoneID = 2, Name = "Tom" });
// You can construct your BindingList<User> from the List<User>
BindingList<User> users = new BindingList<User>(usersList);
// This line binds to the BindingList<User>
dataGridView1.DataSource = users;
// We now create the BindingSource
source = new BindingSource();
// And assign the List<User> as its DataSource
source.DataSource = usersList;
// And again, set the DataSource of the DataGridView
// Note that this is just example code, and the BindingList<User>
// DataSource setting is gone. You wouldn't do this in the real world
dataGridView1.DataSource = source;
dataGridView1.AllowUserToAddRows = true;
}
// This button click event handler shows how to add a new row, and
// get at the inserted object to change its values.
private void button1_Click(object sender, EventArgs e)
{
User user = (User)source.AddNew();
user.Name = "Mary Poppins";
}
}
Il ya des événements OnUserAddedRow et OnUserDeletedRow auxquels vous pouvez vous abonner afin que vous puissiez modifier votre collection sur l'action de l'utilisateur.
Merci. Mais il n'y a aucune ligne vide sur les fonds de DataGridView, malgré le fait que AllowUserAddRows a la valeur true. – Peter17
Est-il possible d'ajouter des lignes via DataGridView délimité? Ou devrais-je utiliser autre chose pour atteindre cet objectif? – Peter17
L'exemple sur le MSDN a 2 boutons pour ajouter et supprimer des lignes: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.aspx –
- 1. Ajout de données à DataGridView
- 2. Problème Ajout à la collection Observable
- 3. Ajout à une collection sérialisée
- 4. Ajout d'éléments à une collection
- 5. Ajout colonne Valeur Dynamiquement à un datagridview
- 6. Ajout de rangées à une datagrid datagridview
- 7. Ajout de SubTable à un DataGridView
- 8. Ajout d'un bouton à un WinGrid DataGridView
- 9. Suppression d'une collection subsonique liée à un winforms datagridview
- 10. Ajout d'un élément à une collection dans une collection
- 11. VBA Ajout d'une classe à une collection
- 12. Ajout à une collection dans MVVM
- 13. Ajout de propriétés Collection à GRIDVIEW
- 14. Ajout d'un contrôle dans Datagridview
- 15. Ajout de chemins de fichier à une colonne DataGridView (C#)
- 16. Ajout à une collection dans google-appengine
- 17. Ajout d'une collection d'objets à Entity Framework
- 18. Ajout de nouvelles colonnes à un DataGridView Winforms via le code
- 19. DataGridView ne s'actualise pas sur Collection Modified
- 20. Ajout à la collection ViewData [] de l'extension AuthorizeAttribute
- 21. Ajout d'un objet tableau à la collection Users dans Meteor.js
- 22. Ajout dynamique de lignes à un objet DataGridView
- 23. Ajout d'une ligne à DataGridView à partir d'un thread
- 24. Ajouter une collection d'images dans une liste à DataGridView
- 25. Configurer des comboboxes dans un datagridview lié à une collection
- 26. this.n'y ose pas correctement via la collection
- 27. Ajout manuel de lignes sur datagridview
- 28. Ajout d'une collection, boucle nécessaire?
- 29. Passage de la collection via asmx
- 30. Ajout de ComboBox à un datagridview pour une ligne particulière
Merci beaucoup! Votre réponse et vos explications sont en jeu. J'ai utilisé BindingList comme collection source. –
Peter17
@ Peter17 par UI Je voulais simplement dire qu'avec BindingList lié à la grille, vous pouvez maintenant ajouter et supprimer des éléments de la liste en utilisant la grille elle-même. –