如何将第二个数据源添加到 windows 表单中的现有 DataGridView
How to add second DataSource to existing DataGridView in windows forms
我需要将第二个 DataSource 添加到已经有一个 DataSource 的 DataGridView,或者如果这不可能,也许我可以动态添加新列,其中包含来自第二个 DataSource 的行到填充有第一个 DataSource 的 DataGridView。请是否有人可以举例说明如何管理它。提前致谢。
更多详情:
- 第一个数据源 return 有 4 列,第二个数据源 return 只有 2 列,但两个数据源 return 的一列中的行数相等。因此,如果第一个 DataSource returns 4 行,第二个 DataSource 也将 return 4 行。
- 我设法将第一个 DataSource 绑定到 DataGridView,但我不知道如何添加第二个。两个数据源 return 的数据在单独的列表中形成相同的 mySql 表,但具有不同的数据值。
dataGridViewMojaDjeca - 我需要添加两个数据源的 DataGridView 的名称,DohvatiOcjene - returns 列表,它是保存在名为“listaOcjenaDjeteta”的列表中的第一个数据源,DohvatiProfesore2 方法 returns这是第二个数据源的列表,我没有保存到任何地方,因为我不知道如何将它添加到已经包含来自第一个数据源的数据的 DataGridView 数据源。
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;
}
您可以声明 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();
我需要将第二个 DataSource 添加到已经有一个 DataSource 的 DataGridView,或者如果这不可能,也许我可以动态添加新列,其中包含来自第二个 DataSource 的行到填充有第一个 DataSource 的 DataGridView。请是否有人可以举例说明如何管理它。提前致谢。
更多详情:
- 第一个数据源 return 有 4 列,第二个数据源 return 只有 2 列,但两个数据源 return 的一列中的行数相等。因此,如果第一个 DataSource returns 4 行,第二个 DataSource 也将 return 4 行。
- 我设法将第一个 DataSource 绑定到 DataGridView,但我不知道如何添加第二个。两个数据源 return 的数据在单独的列表中形成相同的 mySql 表,但具有不同的数据值。
dataGridViewMojaDjeca - 我需要添加两个数据源的 DataGridView 的名称,DohvatiOcjene - returns 列表,它是保存在名为“listaOcjenaDjeteta”的列表中的第一个数据源,DohvatiProfesore2 方法 returns这是第二个数据源的列表,我没有保存到任何地方,因为我不知道如何将它添加到已经包含来自第一个数据源的数据的 DataGridView 数据源。
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; }
您可以声明 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();