M-am întors brusc la WinForms, după ani de dezvoltare web, și am probleme cu ceva care ar trebui să fie simplu. Am un ArrayList
al obiectelor de afaceri legat la un DataGrid
pentru a găsi orice modificări și a le salva în baza de date. Dar nu găsesc o modalitate de a accesa rândurile DataGrid
.
Vreau, de asemenea, să validez celulele individuale în timp real, deoarece acestea sunt editate, dar sunt destul de sigur că se poate face. (Poate nu cu ArrayList
ca DataSource
?) Dar pentru iterarea DataGrid
, sunt destul de surprins ca nu pare posibil .
Trebuie să îmi compensez datele despre obiectele afacerii mele în date datume pentru a utiliza datagridul?
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]);
}
Există ceva despre WinForms 3.0, care este mult mai bun decât în 1.1
Nu știu despre 3.0, dar puteți scrie cod în VS 2008 care rulează pe .NET 2.0 framework. (Deci, puteți utiliza cea mai recentă limbă C #, dar puteți utiliza numai bibliotecile 2.0)
This gets you Generics (List
instead of those GodAwful ArrayLists) and a ton of other stuff, you'll literally end up writing 3x less code.
Aha, tocmai testeam pe toată lumea încă o dată! :) Răspunsul real este că rareori trebuie să repetați datagridul. Deoarece, chiar și atunci când se leagă la un ArrayList, legarea este 2 moduri. Cu toate acestea, este util să știm cum să iterați grila direct, poate salva câteva linii de cod acum și apoi.
Dar nu și Myself și Orion au dat răspunsurile mai bune: convingeți părțile interesate să treacă la o versiune superioară a C #, pentru a economisi costurile de dezvoltare și pentru a spori mentenabilitatea și extensibilitatea.