none
Datagridview'ler arası veri aktarımı RRS feed

  • 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());
                           
    
                         }
                       
                     }
                  }
               
                }


    17 Aralık 2018 Pazartesi 06:35

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...

    17 Aralık 2018 Pazartesi 08:25

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...

    17 Aralık 2018 Pazartesi 08:25
  • Mehmet Emin Bey; 

    Öncelikle ilginiz ve desteğiniz için teşekkür ederim, sayenizde belirtmiş olduğunuz faydalı bilgiler üzerinde araştırmalarımı yapıp yeni şeyler öğreneceğim.
    17 Aralık 2018 Pazartesi 12:36