Comment itérer par programme les lignes de la grille de données ?

StackOverflow https://stackoverflow.com/questions/6430

  •  08-06-2019
  •  | 
  •  

Question

Je reviens soudainement à WinForms, après des années de développement Web, et j'ai des problèmes avec quelque chose qui devrait être simple.j'ai un ArrayList d'objets métier liés à un Windows Forms DataGrid.J'aimerais que l'utilisateur puisse modifier les cellules et, une fois terminé, appuyer sur le bouton Enregistrer.À ce stade, j'aimerais parcourir toutes les lignes et colonnes du DataGrid pour rechercher les modifications et les enregistrer dans la base de données.Mais je ne trouve pas de moyen d'accéder au DataGrid Lignes.

Je souhaiterai également valider les cellules individuelles en temps réel, au fur et à mesure de leur modification, mais je suis presque sûr que cela peut être fait.(Peut-être pas avec un ArrayList comme le DataSource?) Mais quant à l'itération du DataGrid, je suis assez surpris que cela ne semble pas possible.

Dois-je vraiment intégrer les données de mes objets métier dans des tables de données afin d'utiliser la grille de données ?

Était-ce utile?

La solution

foreach(var row in DataGrid1.Rows)
{
  DoStuff(row);
}
//Or ---------------------------------------------   
foreach(DataGridRow row in DataGrid1.Rows)
{
  DoStuff(row);
}
//Or ---------------------------------------------
for(int i = 0; i< DataGrid1.Rows.Count - 1; i++)
{
  DoStuff(DataGrid1.Rows[i]);
}

Autres conseils

object cell = myDataGrid[row, col];

Y a-t-il quelque chose dans WinForms 3.0 qui est bien meilleur que dans la version 1.1

Je ne connais pas la version 3.0, mais vous pouvez écrire du code dans VS 2008 qui s'exécute sur le framework .NET 2.0.(Vous pouvez donc utiliser le dernier langage C#, mais vous ne pouvez utiliser que les bibliothèques 2.0)

Cela vous donne des génériques (List<DataRow> au lieu de ces GodAwful ArrayLists) et une tonne d'autres choses, vous finirez littéralement par écrire 3 fois moins de code.

Aha, je testais encore une fois tout le monde !:) La vraie réponse est que vous avez rarement besoin de parcourir la grille de données.Parce que même lors d'une liaison à une ArrayList, la liaison est bidirectionnelle.Pourtant, il est pratique de savoir comment itérer directement la grille, cela peut économiser quelques lignes de code de temps en temps.

Mais NotMyself et Orion ont donné les meilleures réponses :Convaincre les parties prenantes de passer à une version supérieure de C#, pour réduire les coûts de développement et augmenter la maintenabilité et l'extensibilité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top