datagridView1 - object reference not set to an instance of an object

0

Witam, mam problem z przypisaniem pobranej kolekcji z bazy danych do datagridView1.

Treść błędu: Object reference not set to an instance of an object.

Zapytanie z sql pobierającą wszystkich uczniów dla konkretnej klasy, która jest parametrem:

public static DataTable pobierzUczniow(int id_klasa)
{

        string polacz = polacz = ConfigurationManager.ConnectionStrings["mySql"].ConnectionString;
        MySqlConnection polaczenie = new MySqlConnection(polacz);

        polaczenie.Open();

        string sql = String.Format(@"SELECT * FROM uczniowie WHERE id_klasa ={0}",id_klasa);
        using (MySqlCommand cmdSel = new MySqlCommand(sql, polaczenie))
        {
            DataTable dt = new DataTable();
            MySqlDataAdapter da = new MySqlDataAdapter(cmdSel);
            da.Fill(dt);
            return dt;
        }
    }

kawałek kodu z visual'a:

public Obecnosci(int id_klasa)
{
this.id_klasa = id_klasa;
dataGridView1.DataSource = metody.pobierzUczniow(id_klasa);

        InitializeComponent();
        
    }
    public int id_klasa;

Parametr przekazany jest prawidłowo bo id przy breakpoincie się zgadza a przy gridzie jest null.
Problem głupi ale po godzinie próbowania nie mam kompletnie pojęcia o chodzi. Tym bardziej zapytanie wpisane w WorkBencha sie zgadza.

0

A taka kolejność działa:

public Obecnosci(int id_klasa)
        {
            InitializeComponent();

            this.id_klasa = id_klasa;
            dataGridView1.DataSource = metody.pobierzUczniow(id_klasa);
        }
 
0

Działa bo tworzenie kontrolek jest w metodzie InitializeComponent();, więc jak InitializeComponent(); było na końcu to dataGridView1 nie został utworzony a już pakowałeś do niego dane. Zresztą jak zaznaczysz InitializeComponent(); i klikniesz F12 to zobaczysz że są tam wszystkie kontrolki przeciągnięte na formę.
Według mnie lepiej jest dodać kolejny konstruktor i wywołać konstruktor domyślny:

      public Obecnosci()
      {
         InitializeComponent();
      }

      public Obecnosci(int id_klasa)
         : this()
      {
         this.id_klasa = id_klasa;
         dataGridView1.DataSource = metody.pobierzUczniow(id_klasa);
      }

1 użytkowników online, w tym zalogowanych: 0, gości: 1