2010-08-23 4 views
2

J'ai donc une collection dans une zone de liste, qui affiche chaque élément de la collection. Je veux transformer la listbox en un gridview, donc je peux ajouter des cases à cocher et d'autres listes déroulantes. Je suis incapable de trouver un tutoriel qui explique comment faire cela.Transformer une collection en une grille de données

Pour l'exemple, ma collection a 2 éléments, chaque élément a plusieurs colonnes.

  • [0] 747 Jet
    • [0] quantité de passagers: 417
    • [1] Premier vol: 1967
  • [0] A380
    • [0 ] Nombre de passagers: 853
    • [1] Premier vol: 2005

En ce moment, mon listbox utilise ce code

foreach (AMAPnr.Airplane airElement in AMAPnr.Airplanes) 
{ 
    lstPlanes.Items.Add(
     "PassengerAmount: " + airElement.Passenger + " First Flight:" + 
     airElement.FirstFlight.ToString()); 
} 

Comment pourrais-je aller à changer cela en une gridview?

Répondre

2

Mise à jour: L'OP a clarifié qu'il avait choisi les mauvaises balises et que c'était en fait pour WinForms.

Si vous ajoutez un DataGridView à votre formulaire, puis mettez le code suivant dans vos formulaires behind, il fonctionne un régal:

private class Airplane 
{ 
    public string AirplaneName { get; set; } 
    public int PassengerAmt { get; set; } 
    public int FirstFlight { get; set; } 
} 

public Form1() 
{ 
    InitializeComponent(); 

    var planes = new List<Airplane>(); 
    planes.Add(new Airplane() { AirplaneName = "747 Jet", PassengerAmt = 417, FirstFlight = 1967 }); 

    dataGridView1.DataSource = planes; 

} 

Je l'ai utilisé une classe d'avion personnalisé pour montrer cet exemple, un Je ne sais pas exactement comment votre code est structuré et c'était plus facile pour moi de cette façon. Vous devriez être en mesure de brancher votre type de données personnalisé relativement facilement.

+1

J'ajouté par erreur asp.net comme l'un de mes balises, cela fonctionnera pour les formulaires de fenêtre? – Spooks

+0

@Spooks, juste essayé et il a travaillé un régal, sans besoin de la '.DataBind()' line =) – Rob

+1

@Rob merci, je pense que sa liaison de données, je ne sais pas comment l'obtenir pour afficher. (en-têtes/remplir les colonnes) – Spooks

1
public IEnumerable<AMAPnr.Airplane> getItems(Planes) 
    { 
     foreach (AMAPnr.Airplane airElement in Planes) 
     { 
      yield return airElement; 
     } 
     yield break; 
    } 

Ensuite il suffit de faire myDataGrid.DataSource = getItems(AMAPnr.Airplanes);

Vous pouvez également le faire myDataGrid.DataSource = lstPlanes;

Questions connexes