【问题标题】:How to add second DataSource to existing DataGridView in windows forms如何在 Windows 窗体中将第二个 DataSource 添加到现有 DataGridView
【发布时间】:2017-12-12 19:19:15
【问题描述】:

我需要将第二个 DataSource 添加到已经有一个 DataSource 的 DataGridView,或者如果这不可能,我可以将第二个 DataSource 中的行的新列动态添加到填充了第一个 DataSource 的 DataGridView。请如果有人可以举例说明如何管理它。提前致谢。

更多细节:

  • 第一个 DataSource 返回 4 列,第二个 DataSource 仅返回 2 列,但两个 DataSource 在一列中返回相同数量的行。因此,如果第一个 DataSource 返回 4 行,则第二个 DataSource 也将返回 4 行。
  • 我设法将第一个 DataSource 绑定到 DataGridView,但我不知道如何添加第二个。两个 DataSources 从单独的 List 中的相同 mySql 表中返回数据,但具有不同的数据值。
  • dataGridViewMojaDjeca - 我需要添加两个数据源的 DataGridView 的名称,DohvatiOcjene - 返回列表的方法,该列表是保存在名为“ listaOcjenaDjeteta", DohvatiProfesore2 方法返回列表,这是我没有保存的第二个数据源,因为我不知道如何将它添加到 DataGridView 数据源中已经包含来自第一个 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;
    }
    

【问题讨论】:

    标签: c# winforms datagridview datasource


    【解决方案1】:

    您可以声明List 并将您的两个结果列表添加到其中,然后将其设置为数据源并刷新数据网格,如下所示:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 2015-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多