I'm tiba-tiba kembali ke WinForms, setelah bertahun-tahun pengembangan web, dan saya mengalami kesulitan dengan sesuatu yang harus sederhana. Saya memiliki sebuah ArrayList
bisnis benda-benda yang terikat untuk Windows Forms DataGrid
. I'd seperti pengguna untuk dapat mengedit sel, dan bila sudah selesai, tekan tombol Simpan. Pada saat itu saya'd seperti untuk iterate semua baris dan kolom di DataGriduntuk menemukan perubahan apapun, dan menyimpannya ke database. Tapi aku bisa't menemukan cara untuk mengakses
DataGrid` baris.
I'll juga ingin memvalidasi sel-sel individual real time, karena mereka diedit, tapi aku'm cukup yakin itu bisa dilakukan. (Mungkin tidak dengan ArrayList
sebagai sumber data
?) Tapi untuk iterasi yang DataGrid
, aku'm cukup terkejut itu doesn't tampak mungkin.
Aku harus benar-benar hal-hal yang saya business objects data ke dalam datatables untuk menggunakan datagrid?
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]);
}
Apakah ada sesuatu tentang WinForms 3.0 yang jauh lebih baik daripada di 1.1
Saya don't tahu tentang 3.0, tetapi anda dapat menulis kode di VS 2008 yang berjalan pada .NET 2.0 framework. (Jadi, anda bisa menggunakan terbaru C# bahasa, tetapi anda hanya dapat menggunakan perpustakaan 2.0)
Ini membuat anda Generik (Daftar<DataRow>
, bukan orang-orang GodAwful ArrayLists) dan banyak hal-hal lain, anda'll benar-benar berakhir menulis 3x kode kurang.
Aha, aku benar-benar hanya menguji semua orang sekali lagi! :) Jawaban sebenarnya adalah, anda jarang perlu untuk iterate datagrid. Karena bahkan ketika mengikat ArrayList, mengikat 2 cara. Namun, hal ini berguna untuk mengetahui bagaimana untuk itereate grid secara langsung, hal ini dapat menghemat beberapa baris kode sekarang dan kemudian.
Tapi NotMyself dan Orion memberi jawaban yang lebih baik: Meyakinkan para pemangku kepentingan untuk naik ke versi yang lebih tinggi dari C#, untuk menghemat biaya pengembangan dan meningkatkan pemeliharaan dan extensability.