Skip to content

Zadatak za 3

Kreiraj formu kao na slici (dodaj sledeće komponente: 1 TabControl, 1 DataGridView, 1 Chart, 2 Label, 2 TextBox, 1 Button):

U kontrolama DataGridView i Chart potrebno je prikazati pet najskupljih proizvoda iz tabele Products u bazi podataka Northwind pomoću SQL upita:

SET ROWCOUNT 5
SELECT ProductName, UnitPrice 
FROM Products 
ORDER BY UnitPrice DESC

Klikom na dugme Dodaj potrebno je dodati slog u tabelu Products koji se sastoji od ProductName i UnitPrice pomoću SQL upita:

INSERT INTO Products (ProductName,UnitPrice) VALUES (@pName,@uPrice)

gde je @pName podatak tipa string iz kontrole textBox1 i @uPrice podatak tipa double iz kontrole textBox2.

Klikom na tab O programu u kontroli RichTextBox prikazati tekst kao na slici (umesto Radlovački Velimir napišite vaše prezime i ime)

i osigurati da korisnik aplikacije ne može da menja ili obriše taj tekst. Klikom na dugme Nazad prikazati tabPage1.

Klikom na tab Izlaz zatvara se aplikacija.

NAPOMENA: Za trojku nije potrebno kreirati klase niti uskladištene procedure! Umesto TabControl možete dobiti MenuStrip ili ToolStrip, pa umesto tabPage2 onda treba prikazati modalno Form2 sa podacima o školi i učeniku.

REŠENJE

using System;
using System.Data;
using System.Windows.Forms;
using System.Data.SqlClient;                            // Ovo sam dodao zbog SQL komandi
using System.Windows.Forms.DataVisualization.Charting;  // Ovo sam dodao zbog grafikona

namespace ZadatakZaTrojku
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //Deklarišem promenljive za adapter, konekciju, komandu i tabelu.
        SqlDataAdapter da;
        SqlConnection con = new SqlConnection("Data Source=MAINFRAME\\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True");
        SqlCommand cmd;
        DataTable dt;

        private void PrikaziTabelu() // Otvaram konekciju, kreiram tabelu, popunjavam je preko adaptera
        {                            // podacima iz baze i prikazujem u dataGridView
            con.Open();
            dt = new DataTable();
            da = new SqlDataAdapter("SET ROWCOUNT 5 SELECT ProductName, UnitPrice FROM Products ORDER BY UnitPrice DESC", con);
            da.Fill(dt);
            dataGridView1.DataSource = dt;
            con.Close();
        }

        private void NacrtajGrafikon()  // Kreiram tabelu sa dve kolone i popunjavam ih podacima iz dataGridView1,
        {                               // pa crtam stubičasti grafikon na osnovu tih podataka
            dt = new DataTable();
            dt.Columns.Add("kolona1");
            dt.Columns.Add("kolona2");
            foreach (DataGridViewRow red in dataGridView1.Rows)
            {
                int prvaKolona = 0;
                int drugaKolona = 1;
                dt.Rows.Add(red.Cells[prvaKolona].Value, red.Cells[drugaKolona].Value);
            }
            chart1.DataSource = dt;
            chart1.Series["Cene"].ChartType = SeriesChartType.Column;
            chart1.Series["Cene"].XValueMember = "kolona1";
            chart1.Series["Cene"].YValueMembers = "kolona2";
            chart1.Series["Cene"].IsValueShownAsLabel = true;
        }

        private void Form1_Load(object sender, EventArgs e) // Prilikom učitavanja pozivam dve metode iznad
        {                                                   // da bi popunio dataGridView i nacrtao grafikon
            PrikaziTabelu();
            NacrtajGrafikon();
        }

        private void button1_Click(object sender, EventArgs e) // Dodajem slog u bazu pomoću SQL upita, osvežavam podatke u
        {                                                      // dataGridView i na grafikonu i čistim sadržaj tekst boksova
            con.Open();
            cmd = new SqlCommand("INSERT INTO Products (ProductName, UnitPrice) VALUES (@pName, @uPrice)", con);
            cmd.Parameters.AddWithValue("@pName", Convert.ToString(textBox1.Text));
            cmd.Parameters.AddWithValue("@uPrice", Convert.ToDouble(textBox2.Text));
            cmd.ExecuteNonQuery();
            con.Close();
            PrikaziTabelu();
            NacrtajGrafikon();
            textBox1.Text = "";
            textBox2.Text = "";
        }

        private void tabPage3_Enter(object sender, EventArgs e) // Zatvaram aplikaciju
        {
            Application.Exit();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            tabControl1.SelectedTab = tabPage1;
        }
    }
}