U većíni Maturskih zadataka se nalazi grafikon u kojem treba da se prikaže deo rezultata nekog složenog upita.

Postoji više načina za prikaz podataka u grafikonu: 

- za default grafikon sa kolonama - koristimo tabelu koju imamo

U ovom primeru se koristi tabela u koju se smešta rezultat upita..U isto vreme se ta tabela koristi i kao izvor podataka za neki dataGridView. U ovom slučaju ne želimo da ponovo pristupamo bazi, već da isporistimo te iste podatke iz tabele da bi se prikazali na grafikonu.

  string upit = "SELECT  prvi, drugi, treci,cetrvtiPodatak FROM nekaTabela";
  DataTable tabela = new DataTable();
  SqlDataAdapter da = new SqlDataAdapter(upit, konekcija);      
...
   da.Fill(tabela);
..
 // dataGridView1.DataSource = tabela;
..

 "Pešačka" metoda bi bila da se u niz stringova unesu sve kolone (trebaće za x-osu) a u niz brojeva da se smeste takođe sve kolone (trebaće za y-vrednosti). Na x-osi su stringovi - za šta se prikazuju podaci i to treba da se uzme iz odgovarajuće kolone u tabeli. U sledećem primeru će ti podaci biti na mestu drugi. Na y-osi su vrednosti koje treba da se prikažu u grafikonu. U sledećem primeru će vrednosti da se nalaze na mestu treci (gledate kako se zovu kolone u upitu pa se isto tako zovu i u tabeli koju ste dobili)

U sledećem primeru se na x-osi grafikona prikazuju podaci iz kolone drugi a za njih se po y-osi prikazuju podaci iz kolone treci. Naziv kolone bi mogao da se piše i u obliku sringa (asocijativni niz) ali može da se piše i samo redni broj kolone - što će biti upotrebljeno u ovom slučaju:

string[] x = new string[tabela.Rows.Count];
int[] y = new int[tabela.Rows.Count];

for (int i = 0; i < tabela.Rows.Count; i++)
{
x[i] = tabela.Rows[i][1].ToString(); // ! ! !
y[i] = Convert.ToInt32(tabela.Rows[i][2]); // ! ! !
}

chart1.Series[0].Points.DataBindXY(x, y); // ! ! !

*********************************

- pristupamo bazi po podatke, smeštamo ih u tabelu i iz tabele u Chart -

 Da bismo dobili podatke koji su potrebni za grafikon pristupamo bazi pomoću odgovarajućeg upita, pa te podatke smeštamo u tabelu iz koje će se podaci dalje prikazivati na grafikonu

Pošto većina grafikona koristi jedan skup podataka za x-osu i drugi skup podataka za y-osu, logično se izvodi zaključak da bi trebalo da se kao rezultat dobije tabela koja ima samo dve kolone - jedna za x-osu i druga za y-osu.

U ovom primeru se koristi DataAdapter:

           DataTable dt = new DataTable();
           SqlConnection kon = new SqlConnection("-- Vaš konekcioni string --");
           SqlDataAdapter da1 = new SqlDataAdapter(upit, kon);
           da1.Fill(dt);
          
            chart2.DataSource = dt;
            chart2.Series[0].XValueMember = dt.Columns[0].ToString();
            chart2.Series[0].YValueMembers = dt.Columns[1].ToString();
                chart2.DataBind();
.

******************************

ako želite da prikažete podatke koji se već nalaze u kontroli DataGridView, dodajete to nakon popunjavanja dataGridView-a.

U deo za XValueMember i za YValueMembers  se biraj indexi odgovarajućih kolona iz dataGridView-a.

U sledećem delu koda se koristi druga kolona za x-osu i treća kolona za y-osu:

chart1.Series[0].XValueMember = dataGridView1.Columns[1].DataPropertyName;
chart1.Series[0].YValueMembers = dataGridView1.Columns[2].DataPropertyName;
chart1.DataSource = dataGridView1.DataSource;

Poslednja izmena: недеља, 2. новембар 2025, 16:02