[ hrib @ 13.04.2011. 18:28 ] @
Pozdrav, evo imam nekoliko pitanja vezana uz WinForms.

Prvo, koji od načina preporučate i koristite prilikom prenošenja parametara među formama? Npr. odabir poslovnog partnera u formi račun - otvara se nova forma u kojoj se bira, te se to prenosi u prvu formu.
Do sada sam koristio atribute (properties) u "drugoj" formi i delegate (korištenje konstruktora mi u ovom slučaju nije bilo primjereno). Problem koji mi se kod ovoga javlja, je da nakon što odaberem nešto u drugoj formi, popunim i potvrdim prvu formu, moram se brinuti da varijable u kojima spremam odabrane podatke u drugoj formi resetiram na neke početne vrijednosti, što iziskuje možda nepotreban dodatni posao.

Drugo, recimo da imam formu katalog poslovnih partnera, koja služi dodavanju poslovnih partnera. Tu istu formu želio bih iskoristiti i za uređivanje podataka o poslovnih partnerima i odabir poslovnog partnera. To sam do sada riješavao na način da je forma imala atribut tipAkcije, gdje sam određivao koje buttone ću prikazati (dodaj, uredi ili odaberi), te je svaki button imao metodu _clicked. Postoji li elegantnije rješenje?

Treće, u kojoj mjeri je dobro učestalo korištenje eventa formActivated? Primijetio sam da mi malo usporava aplikaciju. Koristim ga vezano uz prvo pitanje, nakon što odaberem partnera, zatvorim "drugu" formu, te se prva tada aktivira i u kontrole se popune odabrani podaci. Također, ovu metodu koristim i nakon neke akcije nad bazom podataka (CUD), kako bih u dataGrid-u dobio nove podatke. Ima li boljeg načina?

Toliko za sada, hvala i pozdrav :)




[ ravni @ 14.04.2011. 18:25 ] @
resenje za prvi problem:
napravi metod u formi za odabir poslovnog partnera
Code:
public static PoslovniPartner Izaberi()
u kojem ces instancirati formu, prikazati je i vratiti odgovarajucu vrednost. na taj nacin ti je sve fino upakovano

sto se tice treceg problema, nije mi bas jasno kako koristis taj event u sprezi sa odabirom partnera... sto se tice refresha podataka nakon crud operacija - ako su to operacije koje obavlja sam klijent onda znas kada si uradio tu operaciju, pa ne moras da refreshujes svaki put. ako su problem crud operacije drugih klijenata, onda ti je svakako neophodan neki momenat kada ces osveziti podatke, pa to moze biti activated event. tu mozes da ubrzas stvari tako sto ces iz baze dovlaciti samo promenjene podatke
[ Boris B. @ 16.04.2011. 10:25 ] @
Koristi modalne forme ( FormaEditor.ShowDialog(); ), kad se ShowDialog zavrsi (odmah posle linije xxx.ShowDialog()) onda osvezi podatke. I obavezno u formu katalog stavi dugme "Osveži, da korisnik može na zahtev da osveži podatke.

@ravni: Ajde daj neki primer kako ces iz baze dovuci samo promenjene podatke od drugih klijenata. Neki timestamp? Kako ces onda na efikasan nacin spojiti te promenjene i stare podatke u jedinstvenu listu koja je source za neki npr. grid?





[ ravni @ 16.04.2011. 17:44 ] @
Citat:
Boris B.: @ravni: Ajde daj neki primer kako ces iz baze dovuci samo promenjene podatke od drugih klijenata. Neki timestamp? Kako ces onda na efikasan nacin spojiti te promenjene i stare podatke u jedinstvenu listu koja je source za neki npr. grid?
Upravo. Timestamp ili version polje. Ako je record obrisan, obrises ga iz liste, ako je dodat, dodas ga, a ako je izmenjen, nadjes record u listi i ili ga izbacis pa dodas novi ili prepises preko njega nove podatke.