1
votes

I need to add second DataSource to DataGridView which already has one DataSource, or if that isn't possible maybe I can dynamically add new columns with rows from the second DataSource to the DataGridView filled with the first DataSource. Please if someone can give an example and explanation of how to manage that. Thanks in advance.

More details:

  • the first DataSource returns 4 columns, and the second DataSource returns only 2 columns but both DataSources returns equal numbers of rows in a columns. So if the first DataSource returns 4 rows the second DataSource will also return 4 rows.
  • I managed to bound the first DataSource to the DataGridView but I don't know how to add second. Both DataSources returns data form the same mySql tables in a separate List but with a different data values.
  • dataGridViewMojaDjeca - Name of the DataGridView to which I need to add both DataSources, DohvatiOcjene - method which returns the list which is the first DataSource saved in a List called "listaOcjenaDjeteta", DohvatiProfesore2 method which returns the list which is the second DataSource which I haven't saved nowhere because I don't know how to add it to the DataGridView DataSource which already contains data from the first DataSource.

    void PrikaziPodatkeDjeteta(object sender, EventArgs e)
    {
        Ocjene ocjeneDjeteta = new Ocjene();
        ToolStripMenuItem clickedItem = (ToolStripMenuItem)sender;
        List<Ocjene> listaOcjenaDjeteta = ocjeneDjeteta.DohvatiOcjene(svaDjeca[int.Parse(clickedItem.Name)].IdDjeteta);
        dataGridViewMojaDjeca.DataSource = listaOcjenaDjeteta; // here I need to add second DataSource!***
      DohvatiPodatkeDjeteta(svaDjeca[int.Parse(clickedItem.Name)].IdDjeteta);
        lblImeIPrezime.Text = djeca.imeDjeteta + " " + djeca.prezimeDjeteta;
        lblKorisnickoIme.Text = djeca.korImeDjeteta;
        dataGridViewMojaDjeca.AutoResizeColumns();
    }
    
    
    
    public List<Ocjene> DohvatiOcjene(int korisnik)
    {
        List<Ocjene> listaOcjena = new List<Ocjene>();
        //string sqlUpit = "SELECT * FROM Ocjenjivanje WHERE id_ucenik = '" + korisnik + "';";
        string sqlUpit = "SELECT Ocjenjivanje.vrijeme, Korisnik.ime AS imeProfesora, Korisnik.prezime AS prezimeProfesora, Predmet.naziv AS nazivPredmeta, Ocjenjivanje.ocjena, Ocjenjivanje.napomena FROM Korisnik, Predmet, Ocjenjivanje, Profesor_predaje, Razred_ucenik, Profesor_predaje_predmet_razredu WHERE Ocjenjivanje.id_zapis = Profesor_predaje_predmet_razredu.id_zapis and Profesor_predaje_predmet_razredu.id_profesor_predmet = Profesor_predaje.id_zapis and Profesor_predaje.id_predmet = Predmet.id and Profesor_predaje_predmet_razredu.id_razred_ucenik = Razred_ucenik.id_zapis and Razred_ucenik.id_ucenik = Korisnik.id and Korisnik.id = '" + korisnik + "';";
        DbDataReader dr = DB.Instance.DohvatiDataReader(sqlUpit);
        while (dr.Read())
        {
            Ocjene o = new Ocjene(dr);
            listaOcjena.Add(o);
        }
        dr.Close();
        idZapisa = 0;
        return listaOcjena;
    }
    
    public List<Ocjene> DohvatiProfesore2()
    {
        List<Ocjene> imeProfesora = new List<Ocjene>();
            //prezimeProfesora = "", imeIprezimeProfesora = "";
        if (idZapisa != 0)
        {
            //string sqlUpit = "SELECT Korisnik.ime AS imeProfesora, Korisnik.prezime AS prezimeProfesora FROM Ocjenjivanje, Profesor_predaje_predmet_razredu, Profesor_predaje, Korisnik WHERE Ocjenjivanje.id_zapis = '" + idZapisa + "' AND Ocjenjivanje.id_zapis = Profesor_predaje_predmet_razredu.id_zapis AND Profesor_predaje_predmet_razredu.id_profesor_predmet = Profesor_predaje.id_zapis AND Profesor_predaje.id_profesor = Korisnik.id GROUP BY Korisnik.prezime, Korisnik.ime;";
            string sqlUpit = "SELECT Korisnik.ime AS imeProfesora, Korisnik.prezime AS prezimeProfesora FROM Ocjenjivanje, Profesor_predaje_predmet_razredu, Profesor_predaje, Korisnik WHERE Ocjenjivanje.id_zapis = '" + idZapisa + "' AND Ocjenjivanje.id_zapis = Profesor_predaje_predmet_razredu.id_zapis AND Profesor_predaje_predmet_razredu.id_profesor_predmet = Profesor_predaje.id_zapis AND Profesor_predaje.id_profesor = Korisnik.id;";
            DbDataReader dr = DB.Instance.DohvatiDataReader(sqlUpit);
            while (dr.Read())
            {
                Ocjene o = new Ocjene(dr);
                imeProfesora.Add(o);
                //prezimeProfesora = dr["prezimeProfesora"].ToString();
            }
            dr.Close();
            //imeIprezimeProfesora = imeProfesora + " " + prezimeProfesora;
        }
        else
        {
            //imeIprezimeProfesora = "";
        }
        return imeProfesora;
    }
    
1

1 Answers

0
votes

You can declare List and add your two result List in it, and after it set it as datasource and refresh datagrid like this:

List<Ocjene> listaOcjenaDjeteta = new List<Ocjene>();
listaOcjenaDjeteta.AddRange(ocjeneDjeteta.DohvatiOcjene(svaDjeca[int.Parse(clickedItem.Name)].IdDjeteta));// Add first List
listaOcjenaDjeteta.AddRange(ocjeneDjeteta.DohvatiProfesore2());// Add second List

dataGridViewMojaDjeca.DataSource = listaOcjenaDjeteta;
dataGridViewMojaDjeca.Refresh();