[ alfa-pro @ 27.08.2016. 15:43 ] @
Kako da prosledim dataset adapteru koji se nalazi u modelu. Hocu da sacuvam izmenu u datagridview ali je problem sto moje reference za dataset i adapter se nalaze u model klasi a u view ne zelim nikakve veze sa bazom i upitima. Ono sto pravi vezu izedju njih je prezenter. Ja mislim da sam u samom startu malo lose postavio tehnicke stvari. Prvo radi se o grupama proizvoda. Za prikaz svih grupa metoda u modelu izgleda ovako: Code: public DataTable SelectAll() { using (conn = new MySqlConnection(Properties.Settings.Default.ConnectionString)) { try { conn.Open(); string query = "SELECT * FROM grupe"; using (adapter = new MySqlDataAdapter(query, conn)) { dt = new DataTable(); ds = new DataSet(); adapter.Fill(ds, "grupe"); dt = ds.Tables["grupe"]; } conn.Close(); } catch(MySqlException ex) { MessageBox.Show(ex.Message); } } return dt; } Metoda u prezenteru za prikaz svih grupa: Code: public DataTable SelectAll() { return _model.SelectAll(); } I na kraju view deo Code: private void GrupeArtikala_Load(object sender, EventArgs e) { bs = new BindingSource(); bs.DataSource = _presenter.SelectAll(); grupeArtikalaGrid.DataSource = bs; } kao sto se moze videti u view imam event load koji kreira referencu bs i kao DataSource prosledjujem DataTable kroz prezenter koji je povezan sa modelom i na kraju sve to prosledim datagridview koji radi super. E sada problem nastaje kod create/update. Ono sto bi trebalo da bude jeste da na event Click ja preuzmeme GetChanges() iz DataSet-a koji se nalazi u modelu i da sve to prosledim dataAdapter.Update(dataset) koji je isto takodje u modelu. Ono sto je meni padalo na pamet da u modelu napravim metodu npr CreateUpdate(DataSet ds) Code: private void CreateUpdate(DataSet ds) { changes = ds.GetChanges(); if (changes != null) { int updatedRows = dataAdapter.Update(changes); ds.AcceptChanges(); } } I u prezenteru isto napravim CreateUpdate(DataSet ds) i naravno kroz view Code: private void saveToolStripButton_Click(object sender, EventArgs e) { _presenter.SaveUpdate(ds); } Opet nailazim na problem posto ja nemam u view pristup dataset-u. Ono sto mogu da prosledim kroz view je BindingSource Recite neki nacin kako da ovo sredim... Hvalal |