2011-08-02 2 views
2

J'ai besoin de remplir un DataGridView par programmation. Les colonnes de la base de données sont fixes et les lignes dépendent de la taille de la liste. En fait, j'ai List<MyCustomClass> et j'ai besoin de remplir les données avec cette liste.Comment remplir DataGridView Programatically

Actuellement, je fais ceci:

public Constructor() 
{ 
    InitializeComponent(); 
    dataGridViewFiles.AutoGenerateColumns = false; 
    dataGridViewFiles.ColumnCount = 3; 
    dataGridViewFiles.Columns[0].Name = "File Name"; 
    dataGridViewFiles.Columns[1].Name = "Total Documents"; 
    dataGridViewFiles.Columns[2].Name = "Total Pages"; 
} 

Public LoadDGV() 
{ 
    for (int i = 0; i < nTotalInputFiles; i++) 
    {//add code here for adding rows to dataGridviewFiles 
     DataGridViewRow tempRow = new DataGridViewRow(); 

     DataGridViewCell cellFileName = new DataGridViewTextBoxCell(); 
     cellFileName.Value = selectedProject.InputFiles[i].FileName; 
     tempRow.Cells.Add(cellFileName); 

     DataGridViewCell cellDocCount = new DataGridViewTextBoxCell(); 
     cellDocCount.Value = selectedProject.InputFiles[i].DocCount.ToString(); 
     tempRow.Cells.Add(cellDocCount); 

     DataGridViewCell cellPageCount = new DataGridViewTextBoxCell(); 
     cellPageCount.Value = selectedProject.InputFiles[i].PageCount.ToString(); 
     tempRow.Cells.Add(cellPageCount); 

     tempRow.Tag = selectedProject.InputFiles[i].Id; 
     dataGridViewFiles.Rows.Add(tempRow); 
    } 

Mais le code ci-dessus un certain temps ne pas parfait. Alors, y a-t-il un autre moyen? Ou toute suggestion pour améliorer ci-dessus?

+2

Quelle erreur voyez-vous? Ou quel résultat voyez-vous? – Tim

Répondre

3

J'éviter de travailler avec le DataGridView directement, et je vous suggère d'utiliser un « modèle » de certains genre que vous pouvez ensuite lier le DGV à. Par exemple, vous pouvez utiliser un DataTable avec le même schéma que la grille de votre choix, et ainsi vous ne manipulez que le modèle.

J'ai toujours trouvé préférable d'utiliser DataBinding et de manipuler le modèle que d'essayer de manipuler le DGV directement.

0

ce qui est parfait pour vous? Vous pouvez créer un DataTable et le lier à votre grille qui crée automatiquement vos colonnes

+0

Par parfait je veux dire quelque temps ajouter des lignes et un peu de temps, et quand il n'ajoute pas alors il montre exception RowIndex hors limite – Jame

+0

Je ne vois pas dans votre code où vous pourriez avoir un problème avec RowIndex. – Arian

Questions connexes