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;
}
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();
}
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;
}
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();
}
}
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);
}
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.
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.