2008-08-08 20 views
3

私は何年ものWeb開発を経て、突然WinFormsに戻ってきました。単純なものに問題があります。私はArrayListのビジネスオブジェクトをWindowsフォームDataGridにバインドしています。私は、ユーザーがセルを編集できるようにしたいと思いますし、終了したら、保存ボタンを押してください。その時点で、DataGridのすべての行と列を繰り返して、変更を見つけてデータベースに保存したいと思います。しかし、私はDataGrid行にアクセスする方法を見つけることができません。データグリッドの行をプログラムで反復処理する方法は?

また、個々のセルをリアルタイムで検証したい場合は、編集した時点で確認することもできますが、できることは間違いありません。 (DataSourceとしてArrayListではないかもしれませんか?)しかし、DataGridを反復する場合、私はそれが可能ではないように思われます。

データグリッドを使用するには、ビジネスオブジェクトデータをデータセットに入れる必要がありますか?

答えて

5
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]); 
} 
+3

私はあなたの3番目の例が間違っていると思います。不要 - 1 –

0

私は約3.0を知らないが、あなたは上で動作するVS 2008でコードを書くことができます1.1

に比べてそんなに優れているWinFormsの3.0については何があります。 NET 2.0フレームワーク。

これで、Generics(GodAwful ArrayListsの代わりにList<DataRow>)と他にもたくさんのものが得られますが、あなたは文字通り最後になります3倍少ないコードを書く。

1
object cell = myDataGrid[row, col]; 
-2

私は本当にもう一度全員をテストしていました。 :)実際の答えは、あなたはめったにデータグリッドを反復する必要がないということです。 ArrayListにバインディングする場合でも、バインディングは2通りあるからです。それでも、グリッドを直接描画する方法を知っておくと便利ですが、今度は数行のコードを節約することができます。

しかし、NotMyselfとOrionはより良い答えを出しました。開発コストを節約し、保守性と拡張性を高めるために、利害関係者にC#の上位バージョンに移行するよう説得します。

関連する問題