En iyi yanıtlayıcılar
Datagridview'ler arası veri aktarımı

Soru
-
Arkadaşlar merhaba;
Aşağıdaki kod ile iki datagridview arasında veri aktarımı yapıyorum ama sorunum şu sadece ilk kolonu aktarıyor satırın tamamını aktarmıyor. Son olarak datagridviewe column olarak eklediğim ve ilk 5 satırdaki checkboxı otomatik nasıl seçtirebilirim
private void button1_Click(object sender, EventArgs e) { foreach (DataGridViewRow row in dataGridView1.Rows) { if (row.Cells[0].Value != null ) { if ((Boolean)row.Cells[0].Value == true) { dataGridView2.Rows.Add(row.Cells[1].Value.ToString()); } } } }
Yanıtlar
-
Merhaba Erkan bey,
Öncelikle datagridview nesnesine bu şekilde satır sütun bazında erişmek sakıncalı.
Şöyle yapmalısınız ;
Datagrid için bir bindingsource kullanmalısınız ve bu bindingsource nesnesine bir koleksiyon vs. atamalısınız.Eğer bu şekilde yaparsanız bir datagriddeki tüm veriler aslında koleksiyondaki(List,Observablecollection vs.) veriler olacaktır.
Siz listeye ekleme/çıkarma yaptıkça datagrid güncellenecektir , başka bir datagride bunları atmak istediğiniz dede veriler zaten elinizde olacak(koleksiyon şeklinde) bu verileri diğer datagridin bindingsourceune bağlayabilirsiniz.
Örnek insanların isim soyisimlerini tuttuğunuzu varsayalım datagridlerde ;
Bir sınıf olmalı ;
public Class Person { public string Name {get;set;} public string Surname {get;set;} }
Yukarıdaki sınıf sizin verilerinizin karşılığı olacak.Bunları bir listede şu şekilde tutabiliriz;
ObservableCollection<Person> liste1 = new ObserVableCollection(); //yada List<Person> liste2 = new list<Person>();
Burada şöyle bir avantajda kazanıyorsunuz (LINQ);
liste2.Where(x=>x.Name=="Mehmet");//adı mehmet olan kayıtlar Liste2.Where(x=>x.Name=="Ali"&&x.Surname=="C#"); //gibi örnekler çoğaltılabilir.
Bu arada yanlış anlaşılmasın , datagridin satırlarını bir koleksiyona dönüştürüp yukarıda yazdığım ifadeler elde edilebilir linq ile ancak iyi bir kullanım değil.
ÖZET:Sizin yapmanız gereken şey verilerinizin karşılığı bir sınıf yada struct oluşturmak ve bunları tutan bir koleksiyon tanımlamak sonra bu koleksiyonu datagridin bindingsource une atamak.
Kolay gelsin...
- Yanıt Olarak Öneren Önay YALÇINERModerator 17 Aralık 2018 Pazartesi 08:27
- Yanıt Olarak İşaretleyen Erkan KESEMEN 17 Aralık 2018 Pazartesi 12:36
Tüm Yanıtlar
-
Merhaba Erkan bey,
Öncelikle datagridview nesnesine bu şekilde satır sütun bazında erişmek sakıncalı.
Şöyle yapmalısınız ;
Datagrid için bir bindingsource kullanmalısınız ve bu bindingsource nesnesine bir koleksiyon vs. atamalısınız.Eğer bu şekilde yaparsanız bir datagriddeki tüm veriler aslında koleksiyondaki(List,Observablecollection vs.) veriler olacaktır.
Siz listeye ekleme/çıkarma yaptıkça datagrid güncellenecektir , başka bir datagride bunları atmak istediğiniz dede veriler zaten elinizde olacak(koleksiyon şeklinde) bu verileri diğer datagridin bindingsourceune bağlayabilirsiniz.
Örnek insanların isim soyisimlerini tuttuğunuzu varsayalım datagridlerde ;
Bir sınıf olmalı ;
public Class Person { public string Name {get;set;} public string Surname {get;set;} }
Yukarıdaki sınıf sizin verilerinizin karşılığı olacak.Bunları bir listede şu şekilde tutabiliriz;
ObservableCollection<Person> liste1 = new ObserVableCollection(); //yada List<Person> liste2 = new list<Person>();
Burada şöyle bir avantajda kazanıyorsunuz (LINQ);
liste2.Where(x=>x.Name=="Mehmet");//adı mehmet olan kayıtlar Liste2.Where(x=>x.Name=="Ali"&&x.Surname=="C#"); //gibi örnekler çoğaltılabilir.
Bu arada yanlış anlaşılmasın , datagridin satırlarını bir koleksiyona dönüştürüp yukarıda yazdığım ifadeler elde edilebilir linq ile ancak iyi bir kullanım değil.
ÖZET:Sizin yapmanız gereken şey verilerinizin karşılığı bir sınıf yada struct oluşturmak ve bunları tutan bir koleksiyon tanımlamak sonra bu koleksiyonu datagridin bindingsource une atamak.
Kolay gelsin...
- Yanıt Olarak Öneren Önay YALÇINERModerator 17 Aralık 2018 Pazartesi 08:27
- Yanıt Olarak İşaretleyen Erkan KESEMEN 17 Aralık 2018 Pazartesi 12:36
-