// Osvježavanje svojstava stavke. Ovo bi se inaèe trebalo raditi u poslovnom // objektu stavke ali to u ovom primjeru nije moguæe zbog jednostavnijeg dizajna frameworka private void stavkaDataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex == -1) { return; } if (e.ColumnIndex == 0 || e.ColumnIndex == 1) { try { // Šifra object sifArtikla = stavkaDataGridView[e.ColumnIndex, e.RowIndex].Value; if (sifArtikla != null) { Artikl a = artiklBll.Fetch((int)sifArtikla); if (a != null) { Stavka s = stavkaBindingSource.Current as Stavka; s.JedCijArtikla = a.CijArtikla; s.JedMjereArtikla = a.JedMjere; } } } catch (InvalidCastException) { // Nije unesena ispravna vrijednost. Zanemari. Validacija æe to uloviti. } } }
// Stvara novi objekt èitanjem iz podataka baze public static Stavka CreateNew(IDataReader dr) { Stavka rez = new Stavka(); rez.Load(dr); return(rez); }
protected void Zoom() { if (stavkaDataGridView.SelectedCells.Count == 1 && stavkaDataGridView.SelectedCells[0].ColumnIndex == 0 || stavkaDataGridView.SelectedCells[0].ColumnIndex == 1) { ArtiklForm f = new ArtiklForm(); f.StartPosition = FormStartPosition.CenterScreen; if (f.ShowDialog() == DialogResult.OK) { // Potrebno zbog bindinga na lookup u sluèaju novounesenih artikala artiklBindingSource.DataSource = artiklBll.FetchAll(); Artikl a = (Artikl)f.Selected; Stavka s = null; if (stavkaDataGridView.Rows[stavkaDataGridView.SelectedCells[0].RowIndex].IsNewRow) { stavkaBindingSource.CancelEdit(); Dokument dok = (Dokument)dokumentBindingSource.Current; s = new Stavka(); dok.Stavke.Add(s); } else { s = (Stavka)stavkaBindingSource.Current; } if (s != null) { s.SifArtikla = a.SifArtikla; s.NazArtikla = a.NazArtikla; s.JedMjereArtikla = a.JedMjere; s.JedCijArtikla = a.CijArtikla; } } } }
// Obavlja DELETE private void Delete(Stavka item, SqlCommand cmd) { cmd.CommandText = "[dbo].[ap_Stavka_D]"; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@IdDokumenta", SqlDbType.Int)).Value = item.IdDokumenta.HasValue ? (object)item.IdDokumenta.Value : DBNull.Value; cmd.Parameters.Add(new SqlParameter("@SifArtikla", SqlDbType.Int)).Value = item.SifArtikla.HasValue ? (object)item.SifArtikla.Value : DBNull.Value; cmd.ExecuteNonQuery(); }
// Validacija pojedinog svojstva poslovnog objekta. Ukoliko // poslovno pravilo nije zadovoljeno, metoda baca iznimku. public void Validate(object businessObject, string propertyName) { Stavka target = (Stavka)businessObject; switch (propertyName) { case "JedCijArtikla": { if (!target.JedCijArtikla.HasValue) { throw new Exception("Cijena je obavezno polje!"); } if (target.JedCijArtikla.Value < 0) { throw new Exception("Neispravan unos!"); } break; } case "KolArtikla": { if (!target.KolArtikla.HasValue) { throw new Exception("Kolièina je obavezno polje!"); } if (target.KolArtikla.Value < 0) { throw new Exception("Neispravan unos!"); } break; } case "PostoRabat": { if (!target.PostoRabat.HasValue) { throw new Exception("Rabat je obavezno polje!"); } if (target.PostoRabat.Value < 0) { throw new Exception("Neispravan unos!"); } break; } default: break; } }
// Vraæanje originalnih vrijednosti (poništenje izmjena) protected override void DoRestore(object backupObject) { Stavka bak = (Stavka)backupObject; idDokumenta = bak.idDokumenta; sifArtikla = bak.sifArtikla; kolArtikla = bak.kolArtikla; jedCijArtikla = bak.jedCijArtikla; postoRabat = bak.postoRabat; nazArtikla = bak.nazArtikla; jedMjereArtikla = bak.jedMjereArtikla; }
// Pohrana originalnih vrijednosti kako bi se mogao napraviti // poništenje unosa protected override void DoBackup(object backupObject) { Stavka bak = (Stavka)backupObject; bak.idDokumenta = idDokumenta; bak.sifArtikla = sifArtikla; bak.kolArtikla = kolArtikla; bak.jedCijArtikla = jedCijArtikla; bak.postoRabat = postoRabat; bak.nazArtikla = nazArtikla; bak.jedMjereArtikla = jedMjereArtikla; }
// Osvježavanje unosa i pridruživanje metode za BLL objekt poslovnom objektu private void stavkaBindingSource_CurrentChanged(object sender, EventArgs e) { // as za razliku od obiène pretvorbe tipa neæe puknuti s InvalidCastException // ako tip nije ispravan nego æe vratiti null. Stavka s = stavkaBindingSource.Current as Stavka; // Ako se radi o novom poslovnom objektu koji još ne zna gdje mu // je BLL objekt... ažuriraj. if (s != null && !s.HasBllObject) { s.NeedBllObject += new NeedBllObjectEventHandler(Stavka_NeedBllObject); } }
// Obavlja INSERT private void Insert(Stavka item, SqlCommand cmd) { cmd.CommandText = "[dbo].[ap_Stavka_C]"; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@IdDokumenta", SqlDbType.Int)).Value = item.IdDokumenta.HasValue ? (object)item.IdDokumenta.Value : DBNull.Value; cmd.Parameters.Add(new SqlParameter("@SifArtikla", SqlDbType.Int)).Value = item.SifArtikla.HasValue ? (object)item.SifArtikla.Value : DBNull.Value; cmd.Parameters.Add(new SqlParameter("@KolArtikla", SqlDbType.Decimal)).Value = item.KolArtikla.HasValue ? (object)item.KolArtikla.Value : DBNull.Value; cmd.Parameters.Add(new SqlParameter("@JedCijArtikla", SqlDbType.Decimal)).Value = item.JedCijArtikla.HasValue ? (object)item.JedCijArtikla.Value : DBNull.Value; cmd.Parameters.Add(new SqlParameter("@PostoRabat", SqlDbType.Decimal)).Value = item.PostoRabat.HasValue ? (object)item.PostoRabat.Value : DBNull.Value; cmd.ExecuteNonQuery(); }
protected override void Zoom() { if (InEditMode) { if (idPartneraComboBox.Focused) { PartnerForm f = new PartnerForm(); f.StartPosition = FormStartPosition.CenterScreen; if (f.ShowDialog() == DialogResult.OK) { // Potrebno zbog bindinga na lookup u sluèaju novounesenih partnera partnerInfoBindingSource.DataSource = partnerBll.FetchAll(); Partner p = (Partner)f.Selected; (dokumentBindingSource.Current as Dokument).IdPartnera = p.IdPartnera; } } else if (idPrethDokumentaComboBox.Focused) { DokumentForm f = new DokumentForm(); f.StartPosition = FormStartPosition.CenterScreen; if (f.ShowDialog() == DialogResult.OK) { // Potrebno zbog bindinga na lookup u sluèaju novounesenih dokumenata prethDokumentBindingSource.DataSource = dokumentBll.FetchAll(); Dokument d = (Dokument)f.Selected; (dokumentBindingSource.Current as Dokument).IdPrethDokumenta = d.IdDokumenta; } } else if (stavkaDataGridView.SelectedCells.Count == 1 && stavkaDataGridView.SelectedCells[0].ColumnIndex == 0 || stavkaDataGridView.SelectedCells[0].ColumnIndex == 1) { ArtiklForm f = new ArtiklForm(); f.StartPosition = FormStartPosition.CenterScreen; if (f.ShowDialog() == DialogResult.OK) { // Potrebno zbog bindinga na lookup u sluèaju novounesenih artikala artiklBindingSource.DataSource = artiklBll.FetchAll(); Artikl a = (Artikl)f.Selected; Stavka s = null; if (stavkaDataGridView.Rows[stavkaDataGridView.SelectedCells[0].RowIndex].IsNewRow) { stavkaBindingSource.CancelEdit(); Dokument dok = (Dokument)dokumentBindingSource.Current; s = new Stavka(); dok.Stavke.Add(s); } else { s = (Stavka)stavkaBindingSource.Current; } s.SifArtikla = a.SifArtikla; s.NazArtikla = a.NazArtikla; s.JedMjereArtikla = a.JedMjere; s.JedCijArtikla = a.CijArtikla; } } StatusBar.RefreshStatusBar(); } }