none
C# Form - Kayıt formundan kaydettiğimiz verinin direkt ana formda ki DataGridView'e eklenmesi RRS feed

  • Soru

  • Merhabalar. Klasik CRUD işlemi yapan bir form uygulaması yapıyorum.  Ana formda bir dataGridView var, her ekleme silme ve güncelleme işlemi onu etkiliyor. Fakat sorunum: ekleme veya silme yaparken bunların gridi etkilemesi için programı durdurup tekrar çalıştırmam gerekiyor,ondan sonra yeni veri ekliyor yani. Ben her veri eklediğimde direkt listeye eklensin istiyorum. Bunu nasıl yapabilirim?

    Şunu da belirteyim ki kayıt formu başka bir formdan ana forma çağırılıyor.

    25 Eylül 2019 Çarşamba 13:03

Tüm Yanıtlar

  • Gride yükleme yaptığınız metodu public hale getirip, silme güncelleme ekleme gibi işlemlerden sonra bir daha çağırın. 

    Altan Özdemir

    25 Eylül 2019 Çarşamba 13:50
  • Örnek olarak aşağıdaki gibi yapabilirsin ki Altan Beyin dediği çözümü örnek kod olarak paylaştım.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Data.SqlClient;
    
    namespace deneme
    {
        public partial class deneme : Form
        {
            public deneme()
            {
                InitializeComponent();
            }
    
    void yenile()
    {
        // veritabanından verilerin çekilip datagridviewde gösterilme kodları
    }
    
    private void Form1_Load(object sender, EventArgs e)
    {
        yenile();
    }
    
    private void Button1_Load(object sender, EventArgs e)
    {
        //CRUD işlemlerden herhangi bir tanesinin kodları
          yenile();
    }


    Merak et, Araştır, Geliştir. Harun Yılmaz

    25 Eylül 2019 Çarşamba 14:01
  • Yanıtınız için öncelikle teşekkür ederim. Yapmıştım yine olmuyordu. 

    Sorunu şu şekilde çözdüm: FormClosed event'ine

    private void frmKayitSayfasi_FormClosed(object sender, FormClosedEventArgs e)
            {
                Form2 f1 = (Form2)Application.OpenForms["Form2"];
                f1.Listele();
            }

    bu kodu ekleyince yaptığım değişikliği hemen gride aktardı.

    25 Eylül 2019 Çarşamba 14:25
  • Yanıtınız için öncelikle teşekkür ederim. Yapmıştım yine olmuyordu. 

    Sorunu şu şekilde çözdüm: FormClosed event'ine

    private void frmKayitSayfasi_FormClosed(object sender, FormClosedEventArgs e)
            {
                Form2 f1 = (Form2)Application.OpenForms["Form2"];
                f1.Listele();
            }

    bu kodu ekleyince yaptığım değişikliği hemen gride aktardı.

    Çalışır elbet ama işi tersten yapıyorsunuz. Birden fazla form ya da bu veriye bağlı bir çok nesne olduğunda buraya tek tek kod mu yazacaksınız? Form2'nin adı değişirse (değişmeli) burayı mı değiştireceksiniz vs. vs.

    Formlar verileri yönetmezler. Sadece gösterirler ve yöneten sınıflara iletirler. Arada veriyi yöneten bir sınıfınız olmalı ve bir değişiklik olduğunda kayıt olmuş tüm nesnelere haber vermeli. Bu işi hobi olarak yapmıyorsanız OOP konusunu ciddi anlamda araştırmanızı öneririm.


    www.cihanyakar.com

    25 Eylül 2019 Çarşamba 18:49