Cum să iterați în mod programat rândurile de dateagrid?

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 <forms> DataGrid Windows Forms. Aș dori ca utilizatorul să poată edita celulele și când este terminat, apăsați butonul Salvare. În acest moment, aș dori să repetați toate rândurile și coloanele din 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?

0
fr hi bn

4 răspunsuri

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.

0
adăugat
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]);
}
0
adăugat
Cred că al treilea exemplu este greșit. Nu este nevoie de - 1
adăugat autor Mark Heath, sursa
object cell = myDataGrid[row, col];
0
adăugat

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.

0
adăugat