DataGridView je Windows Forms kontrola koja omogućava prikaz i uređivanje podataka u tabelarnom obliku  (redovi i kolone) — slično kao Excel tabela. 

Ona ne čuva podatke sama po sebi — već se puni podacima iz izvora, kao što je:

  • DataTable
  • BindingSource
  • List<T> objekata
  • ili direktno iz baze podataka - što ćemo da koristimo u daljem radu

Najlakši način za dodavanje na formu je prevlačenjem komponente DataGridView iz Toolbox-a.


U nastavku je


DataGridView

DataGridView je kontrola koja se koristi za prikaz tabelarnih podataka.

  • Može da se poveže sa jednom tabelom iz baze ili sa objektom koji je izveden iz tabele.
  • Korišćenjem svojstva DataSource povezuje sa sa objektom klase DataTable ili objektom klase koja je izvedena iz klase DataTable.
  • Ako se izvrši povezivanje sa objektom klase DataSet mora se specificirati i njeno svojstvo DataMember kojim se naznačava sa kojom tabelom se vrši povezivanje.
  • DataGridView kreira jednu kolonu za svaku kolonu iz izvora podataka. Header kolone kreira na osnovu naziva odgovarajućeg atributa iz tabele.
  • Dozvoljava različite tipove selekcije: može se selektovati jedna ili više vrsta, jedna ili više kolona, jedna ili više ćelija, ili cela tabela (klikom na ćeliju u gornjem levom uglu).

Osobine DataGridView kontrole

  • Korišćenjem tastera Tab prelazi se iz jedne u drugu ćeliju tabele.
  • Ima automatski tooltip kojim se prikazuje ceo sadržaj ćelije kada se pokazivač miša nalazi iznad nje.
  • Podržava automatsko sortiranje, klikom na header kolone.
  • Dvostrukim klikom između header-a kolona vrši se automatsko podešavanje širine kolone.
  • Omogućava unos sadržaja u ćeliju nakon dvostrukog klika na ćeliju.

DataGridView objekti: detaljnije objašnjenje

  • Svojstvo Colums objekta klase DataGridView daje kolekciju DataGridViewColumn objekata.
  • Svojstvo Rows daje kolekciju DataGridViewRow objekata.
  • DataGridViewRow objekat ima svojstvo Cells kojim se prikazuje kolekcija DataGridViewCell objekata.

DataGridViewColumn objekat

DataGridViewColumn objektima date DataGridView kontrole se pristupa korišćenjem svojstva Columns.

Svojstvo Colums vraća kolekciju DataGridViewColumn objekata.

Sada se pojedininim kolonama tabele tj. DataGridViewColumn objektima pristupa ili korišćenjem rednog broja vrste u tabeli ili korišćenjem njenog naziva.

Kada se u prozoru DataGridView Tasks klikne na opciju Edit Columns otvara se prozor EditColums u kome možemo iščitati naziv određene kolone koja ulazi u sastav DataGridView kontrole.

Primer prikaza header-a kolona

   DataGridViewColumn col = dataGridView1.Columns[0]; 
col.HeaderText = "ID proizvoda";

foreach (DataGridViewColumn dgvC in dataGridView1.Columns)
{
    listBox1.Items.Add(dgvC.HeaderText);
}

Korišćenjem svojstva HeaderText se iz koda može iščitati ili promeniti heder tj. zaglavlje određene kolone koja ulazi u sastav DataGridView objekta. U gornjem kodu, korišćenjem foreach petlje unutar ListBox kontrole se prikazuju header-i svih kolona naše DataGridView kontrole.

      DataGridViewRow objekat

   private void button3_Click(object sender, EventArgs e)
{
    // pristup drugoj vrsti
    DataGridViewRow dgvR = dataGridView1.Rows[1];

    // prikazi sadrzaj celija druge vrste
    foreach (DataGridViewColumn dgvC in dataGridView1.Columns)
    {
        listBox1.Items.Add(dgvR.Cells[dgvC.Name].Value);
    }
}

Korišćenjem svojstva Rows objekta klase DataGridView, pristupa se kolekciji DataGridViewRow objekata, koji predstavljaju vrste DataGridView kontrole. Vrstama unutar DataGridView kontrole se isključivo pristupa na osnovu njenog rednog broja, tj. indeksa koji je baziran na broju 0.

DataGridViewRow objekat ima svojstvo Cells koje vraća kolekciju DataGridViewCell objekata odnosno ćelije date vrste. Pojedinim ćelijam jedne vrste tj. ćelijama DataGridViewRow objekta pristupa se ili korišćenjem rednog broja kolone kojoj ćelija pripada ili korišćenjem naziva kolone kojoj ćelija pripada.

      Klase izvedene iz klase DataGridViewColumn

    • DataGridViewButtonColum klasa prikazuje dugmad tj. Button kontrole unutar jedne kolone DataGridView kontrole. Njoj odgovarjuća klasa za ćeliju je DataGridViewButtonCell.
    • DataGridViewLinkColumn i njoj odgovarajuća klasa za ćeliju DataGridViewLinkCell čija je funkcionalnost slična funkcionalnosti Button kolone, ali se tekst prikazuje u formi linka.
    • DataGridViewCheckBoxColumn (DataGridViewCheckBoxCell  se automatski kreira pri vizuelnom povezivanju DataGridView kontrole za tabelu koja sadrži Boolean tip podataka.
    • DataGridViewComboBoxColumn (DataGridViewComboBoxCell) se koristi se u situacijama kada je potrebno ograničiti unos u ćeliju tj. omogućiti korisniku da u ćeliju odabere jednu vrednost iz datog skupa vrednosti.
    • DataGridViewImageColumn (DataGridViewImageCell ) se koristi se za prikaz slika.
    • DataGridViewTextBoxColumn (DataGridViewTextBoxCell  se koristi za prikaz teksta i predstavlja podrazumevani tip kolone u DataGridView kontroli.

Primer kreiranja DataGridView kontrole koja nije povezana sa izvorom podataka: 


DataGridViewTextBoxColumn col1 = new DataGridViewTextBoxColumn();
col1.Name = "ID";
col1.HeaderText = "ID proizvoda";
dataGridView1.Columns.Add(col1);
DataGridViewComboBoxColumn col2 = new DataGridViewComboBoxColumn();
col2.Items.Add("Stampaci");
col2.Items.Add("Skeneri");
col2.Name = "Category";
col2.HeaderText = "Kategorijaa";
dataGridView1.Columns.Add(col2);
DataGridViewRow dataGridRow = new DataGridViewRow();
DataGridViewTextBoxCell txt1 = new DataGridViewTextBoxCell();
DataGridViewComboBoxCell cmb1 = new DataGridViewComboBoxCell();
cmb1.Items.Add("Stampaci");
cmb1.Items.Add("Skeneri");
txt1.Value = "1";
cmb1.Value = "Skeneri";
dataGridRow.Cells.Add(txt1);
txt1.ReadOnly = true;
dataGridRow.Cells.Add(cmb1);
dataGridRow.Height = 20;
dataGridView1.Rows.Add(dataGridRow);
Uobičajena upotreba DataGridView kontrole je prikaz podataka iz neke tabele ili drugog izvora podataka. Međutim, DataGridView kontrola se može iskoristiti za prikaz bilo kakvih podataka. U gornjem primeru najpre je na formu dodata DataGridView kontrola da bi se izvršilo instanciranje odgovarajuće klase. DataGridView kontrola nije povezana ni sa jednim izvorom podataka. Zatim se kreiraju se dve kolone DataGridView kontrole. Prva kolona je tipa DataGridViewTextBoxColumn a druga kolona je tipa DataGridViewComboBoxColumn. Posle inicijalizacije ovih kolona moraju se dodati u Columns kolekciju DataGridView kontrole čime se kreira struktura DataGridView kontrole. Zatim se iz koda kreira i jedna vrsta DataGridView kontrole. Da bi se kreirala vrsta prethodno je neophodno kreirati ćelije koje ulaze u sastav ove vrste. U ovom primeru to su ćelije tipa DataGridViewTextBoxCell i DataGridViewComboBoxCell. Tip ćelije koja ulazi u sastav reda mora odgovarati tipu kolone kojoj ta ćelija pripada.

Nas interesuje prikaz podataka iz baze.

Dva su pristupa koja koristimo na časovima:

  1. Povezivanje DataGridView kontrole sa tabelom u dizajn modu

    Klikom na strelicu u gornjem desnom uglu DataGridView kontrole otvara se prozor u kojem se može dodati novi izvor podataka ili koristiti neki postojeći - prateći predložede korake povezuje se na odabranu bazu podataka i tabelu u njoj. Sve je automatizovano.

  2. Povezivanje DataGridView kontrole sa tabelom iz programskog koda

    Piše se programski kod za povezivanje po zahtevima zadataka:

  • Dvoklikom na formu se kreira događaj _Load - šta se radi prilikom učitavanja forme - u ovom primeru počinjemo odatle
  • Da bi moglo da se radi sa bazama podataka, u vrhu mora da se nalazi
     
       using System.Data;
       using System.Data.SqlClient;
    
  • Prilikom učitavanja forme želimo da se prikaže sadržaj rezultat upita nad nekom bazom podataka
     
       private void Form1_Load(object sender, EventArgs e)
       {
          // Prvo kreirati konekcioni string, zatim upit, pa konekciju
          string konekcioniString = "Data Source=IME_SERVERA;Initial Catalog=IME_BAZE;Integrated Security=True";
          string upit = "konkretan upit nad bazom";
    
          using (SqlConnection konekcija = new SqlConnection(konekcioniString))
          {
              SqlDataAdapter da = new SqlDataAdapter(upit, konekcija);
              DataTable tabela = new DataTable();
              da.Fill(tabela);
              dataGridView1.DataSource = tabela;
          }
       }
     

Bez obzira koja vrsta baze podataka se koristi, postupak je sličan. 

            ***Connection konekcija = new ***Connection(konStr);    // lpnek
              
            DataTable tabela = new DataTable();

            ***DataAdapter adapter = new ***DataAdapter(komanda);

            adapter.Fill(tabela);

            dataGridView1.DataSource = tabela;



1️⃣ Kreiranje konekcije prema bazi

Prvo treba da se aplikacija poveže na bazu podataka.

Na primer, za SQL Server:

using System.Data;
using System.Data.SqlClient;

// connection string
string connectionString = "Data Source=SERVER_NAME;Initial Catalog=DATABASE_NAME;Integrated Security=True";

🔸 Napomena: Ako se koristi username/password umesto Windows autentifikacije:

string connectionString = "Data Source=SERVER_NAME;Initial Catalog=DATABASE_NAME;User ID=USERNAME;Password=PASSWORD;";

2️⃣ Učitavanje podataka u DataTable

Koristi se SqlDataAdapter koji "puni" DataTable iz baze.

string query = "SELECT * FROM Customers"; // primer upita

SqlDataAdapter adapter = new SqlDataAdapter(query, connectionString);
DataTable table = new DataTable();
adapter.Fill(table);

3️⃣ Povezivanje DataGridView sa tabelom

Nakon što imamo DataTable, samo ga dodelimo kao izvor podataka:

dataGridView1.DataSource = table;

To je dovoljno da DataGridView automatski prikaže sve redove i kolone iz baze!


4️⃣ (Opciono, ali mi ovo nećemo koristiti) — Može da se koristi BindingSource

BindingSource olakšava kasnije osvežavanje i filtriranje podataka:

BindingSource bs = new BindingSource();
bs.DataSource = table;
dataGridView1.DataSource = bs;

Onda može da se menja filter, sortiranje, itd:

bs.Filter = "City = 'London'";

🔹 Kratak primer

Zamisli da imaš formu Form1 sa DataGridView koji se zove dataGridView1.

using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace PrimerApp
{
    public partial class Form1 : Form
    {
        string connectionString = "Data Source=.;Initial Catalog=MojBaza;Integrated Security=True";

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            PrikaziPodatke();
        }

        private void PrikaziPodatke()
        {
            string query = "SELECT * FROM Zaposleni";

            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                SqlDataAdapter adapter = new SqlDataAdapter(query, conn);
                DataTable table = new DataTable();
                adapter.Fill(table);
                dataGridView1.DataSource = table;
            }
        }
    }
}

Kada se forma učita (Form1_Load), tvoja tabela iz baze će biti prikazana u DataGridView.


🔹 Ukratko
Korak Šta se radi Kod/Objekat
1 Konekcija na bazu SqlConnection
2 Učitavanje podataka SqlDataAdapter + DataTable
3 Povezivanje sa tabelom dataGridView.DataSource = table;
     

 

Last modified: Wednesday, 5 November 2025, 11:32 AM