Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

MVP povezivanje datagridview sa modelom

[es] :: .NET :: .NET Desktop razvoj :: MVP povezivanje datagridview sa modelom

[ Pregleda: 1479 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

alfa-pro
Pancevo

Član broj: 241818
Poruke: 476
109.122.107.*



+7 Profil

icon MVP povezivanje datagridview sa modelom27.08.2016. u 15:43 - pre 45 meseci
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
Kada vidjamo uvek ista lica, na kraju ona postaju deo našeg života. A kada postanu
deo našeg života,
onda žele i da nam ga izmene. I ako ne bude po njihovom, nije im pravo. Jer, svaki
čovek ima tačnu predstavu kako bi trebalo da živimo svoj život. A nikad nemaju pojma
kako treba da prožive sopstveni život.
 
Odgovor na temu

ravni

Član broj: 8894
Poruke: 360



+15 Profil

icon Re: MVP povezivanje datagridview sa modelom05.09.2016. u 11:28 - pre 45 meseci
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();
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: MVP povezivanje datagridview sa modelom

[ Pregleda: 1479 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.