remplir datagridview avec une liste d’objects

J’ai une liste qui contient une série d’objects de transaction. Ce que j’essaie de faire, c’est d’afficher ces objects de transaction dans un contrôle Datagridview lors du chargement d’un formulaire. Fondamentalement, Datagridview doit représenter un registre de transaction pour afficher les données de chacun des objects de transaction de la liste.

Je dois admettre que je n’ai pas assez d’expérience dans l’utilisation de Datagridviews et j’ai du mal à comprendre ce que je dois faire ici.

Ma question est la suivante: comment puis-je obtenir les détails de chacun des objects de la liste à afficher dans la vue Datagrid?

Voici mon code.

D’abord la classe de transaction:

public class Transaction { // Class properties private decimal amount; private ssortingng type; private decimal balance; private ssortingng date; private ssortingng transNum; private ssortingng description; // Constructor to create transaction object with values set. public Transaction(decimal amount, ssortingng type, decimal currBal, ssortingng date, ssortingng num, ssortingng descrip) { this.amount = amount; this.type = type; this.balance = currBal; this.date = date; this.transNum = num; this.description = descrip; } // Get and Set accessors to allow manipulation of values. public decimal Amount { get { return amount; } set { amount = value; } } public ssortingng Type { get { return type; } set { type = value; } } public decimal Balance { get { return balance; } set { balance = value; } } public ssortingng Date { get { return date; } set { date = value; } } public ssortingng TransNum { get { return transNum; } set { transNum = value; } } public ssortingng Description { get { return description; } set { description = value; } } public decimal addCredit(decimal balance, decimal credit) { decimal newBalance; newBalance = balance + credit; return newBalance; } public decimal subtractDebit(decimal balance, decimal debit) { decimal newBalance; newBalance = balance - debit; return newBalance; } } } 

Maintenant, le code pour le formulaire “Register”:

  public partial class Register : Form { List tranList = new List(); public Register(List List) { InitializeComponent(); this.tranList = List; } private void Register_Load(object sender, System.EventArgs e) { //regView represents the Datagridview that I'm trying to work with regView.AutoSize = true; regView.DataSource = tranList; regView.Rows.Add(tranList[0]); } } 

Et voici le résultat que je reçois. Enregistrer la sortie

Il existe vraiment deux approches de haut niveau à cet égard.

1) Ajoutez les lignes créées manuellement directement au DataGridView . Dans ce cas, vous devez les mettre à jour / supprimer manuellement au fur et à mesure que les choses changent. Cette approche est “ok” si vous n’avez pas l’intention de modifier / modifier le contenu de l’affichage après l’avoir initialisé. Cela devient intenable si vous le faites.

Pour l’append directement, vous devez créer un DataGridViewRow et le renseigner avec les valeurs individuelles, puis append le DataGridViewRow au DataGridView.Rows .

2) Les données lient le DGV. Il existe de nombreux articles sur la liaison de données à un DataGridView . Dans certains cas, il est plus facile d’append simplement vos données à un DataTable , puis d’extraire un DataView partir de celui-ci et de lier le DataGridView au DataView . D’autres personnes trouvent plus facile de se lier directement à une collection.

CodeProject a un article décent pour vous aider à démarrer sur cette voie, mais une recherche rapide sur Google produira de nombreux autres articles.

http://www.codeproject.com/Articles/24656/A-Detailed-Data-Binding-Tutorial

utiliser comme DGV:

 DataGridView groupListDataGridView; 

colonne:

 DataGridViewTextBoxColumn groupListNameColumn; 

la configuration de la colonne devrait être comme ceci:

 groupListNameColumn.DataPropertyName = "name"; 

utilisez cette propriété, sinon toutes les colonnes seront ajoutées.

 groupListDataGridView.AutoGenerateColumns = false; 

peupler comme ceci:

 private void populateGroupList() { groupListDataGridView.DataSource = null; formattedGroupList = new SortableBindingList(); foreach (GroupObject go in StartUp.GroupList) { DataGridGroupObject dggo = new DataGridGroupObject(); dggo.id = go.Id; dggo.name = go.Name; formattedGroupList.Add(dggo); } groupListDataGridView.DataSource = formattedGroupList; groupListDataGridView.Invalidate(); } 

et modèle:

 public class DataGridGroupObject { public int id { get; set; } //this will be match id column public ssortingng name { get; set; } // this will be match name column }