[ 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
[ ravni @ 05.09.2016. 11:28 ] @
Mogao bi, recimo, da zapamtis u prezenteru (ili modelu) DataTable koji si vratio i onda da ti view bude jos jednostavniji - samo
Code:
_presenter.SaveUpdate();