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

Pozivanje dataSeta koji se nalazi u drugoj Formi

[es] :: .NET :: Pozivanje dataSeta koji se nalazi u drugoj Formi

Strane: 1 2

[ Pregleda: 4316 | Odgovora: 20 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bigtime
Vladimir Dimitrijevic
Beograd

Član broj: 32587
Poruke: 120
*.ptt.yu.



Profil

icon Pozivanje dataSeta koji se nalazi u drugoj Formi15.06.2007. u 11:31 - pre 205 meseci
Pozdrav,
zelim da iz Form2 citam dataSet1 koji se nalazi u Fom1. Na Form1 prikazem podatke u dataGrid-u, ali u Form2 ne mogu to da uradim. Ne znam kako bi to trebalo da uradim, dataSet1 sam stavio da bude public, a pokusao sam da instanciram Form1 na Form2:
Code:

Form1 forma = new Form1();
datagrid1.DataSource = forma.dataSet1;

ali tako ne prolazi, jer izgleda kao da instanciram novu Form1...

Koristim VS.NET 2003, C#, SQL Srvr 2000/2005...

Hvala,
Vlada
 
Odgovor na temu

fpedja
Beograd

Član broj: 145092
Poruke: 76
*.xdsl.beograd.com.



Profil

icon Re: Pozivanje dataSeta koji se nalazi u drugoj Formi15.06.2007. u 12:16 - pre 205 meseci
Ja koristim vs 2005. Probaj ovako, treba da radi:

Dim a As New Form1
a.CourseTableAdapter.GetData.DataSet. (pa dalje uzimas sta hoces npr tables(0).rows...)
ako ne posalji ceo kod!
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12848



+4784 Profil

icon Re: Pozivanje dataSeta koji se nalazi u drugoj Formi15.06.2007. u 13:00 - pre 205 meseci
Ovako otprilike (maternji mi je VB, ali cu pokusati C# napamet):
Kod u form1:
Code:

form2 MyFrom2;
form2.show(this);

Kod u form2:
Code:

form1 MyParent;
MyParent = this.owner;
datagrid1.DataSource = MyParent.dataSet1;


PS. obrati paznju na velika/mala slova jer ih ne znam napamet.
 
Odgovor na temu

vladazec
Vladimir Zecevic

Član broj: 135356
Poruke: 3
80.93.227.*



Profil

icon Re: Pozivanje dataSeta koji se nalazi u drugoj Formi15.06.2007. u 13:29 - pre 205 meseci
Probaj Ovako:
Deklarisi promenljivu dataSet1 kao PUBLIC STATIC promenjivu klase FORM1.

i moci ces da joj pristupis iz druge forme bez instanciranja zato sto je STATIC
datagrid1.DataSource = forma.dataSet1;

samo razmisli sta znaci i da li ti odgovara da ti promenjiva dataSet1 bude STATIC.
 
Odgovor na temu

bigtime
Vladimir Dimitrijevic
Beograd

Član broj: 32587
Poruke: 120
*.internet.krstarica.net.



Profil

icon Re: Pozivanje dataSeta koji se nalazi u drugoj Formi15.06.2007. u 22:47 - pre 205 meseci
Citat:
Shadowed
Kod u form2:
Code:

form1 MyParent;
MyParent = this.owner;
datagrid1.DataSource = MyParent.dataSet1;



Nazalost, javlja gresku prilikom build-a u kodu za this.Owner:
D:\My Documents\Visual Studio Projects\MojProjekat\Form2.cs(117): Cannot implicitly convert type 'System.Windows.Forms.Form' to 'MojProjekat.Form1'




Citat:
vladazec: Probaj Ovako:
Deklarisi promenljivu dataSet1 kao PUBLIC STATIC promenjivu klase FORM1.

i moci ces da joj pristupis iz druge forme bez instanciranja zato sto je STATIC
datagrid1.DataSource = forma.dataSet1;

samo razmisli sta znaci i da li ti odgovara da ti promenjiva dataSet1 bude STATIC.


Probao sam da promenim dataset iz private u static i vraca sledecu gresku prilikom build-a:
D:\My Documents\Visual Studio Projects\MojProjekat\Form1.cs(71): Static member 'MojProjekat.Form1.dataSet1' cannot be accessed with an instance reference; qualify it with a type name instead.

Pozdrav,
Vlada
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12848



+4784 Profil

icon Re: Pozivanje dataSeta koji se nalazi u drugoj Formi15.06.2007. u 23:37 - pre 205 meseci
Citat:
bigtime: Nazalost, javlja gresku prilikom build-a u kodu za this.Owner:
D:\My Documents\Visual Studio Projects\MojProjekat\Form2.cs(117): Cannot implicitly convert type 'System.Windows.Forms.Form' to 'MojProjekat.Form1'

Cudno, ja sam ovo ovako radio vise puta, jedino sto je bio VB ali isti princip.

Edit:
Evo upravo sam probao sledece:
Code:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.Text = "test"
    Dim bla As New Form2()
    bla.Show(Me)
End Sub

Code:

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim xyz As Form1 = Me.Owner
    MsgBox(xyz.Text)
End Sub


i dobijam poruku test

Edit2:
Ali, nakon sto sam probao u C#-u... dobijam istu tu gresku. Ali moze se resiti sa: MyParent = (Form1)this.owner;
E sad, posto nisam bas narocito upucen u C#.. bas me zanima preciznije u cemu je stvar sa implicitnom i eksplicitnom konverzijom, tj. zasto nije isto u VB-u i C#-u

[Ovu poruku je menjao Shadowed dana 16.06.2007. u 00:54 GMT+1]
 
Odgovor na temu

bigtime
Vladimir Dimitrijevic
Beograd

Član broj: 32587
Poruke: 120
*.internet.krstarica.net.



Profil

icon Re: Pozivanje dataSeta koji se nalazi u drugoj Formi15.06.2007. u 23:58 - pre 205 meseci
Uspeo sam da procitam dataSet1 na formi Form2.
U Form1 sam nakon punjenja "dataSet1" otvorio Form2 i za "dataSet1" iz Form2 dodelio vrednost "dataSet1" iz Form1 i to je proslo:

Code:

Form2 proba = new Form2();
proba.dataSet1 = this.dataSet1;
proba.ShowDialog(this);


U Form2_Load dogadjaju sam napunio dataGrid i podaci su prikazani...

Code:

dataGrid1.DataSource = dataSet1.Tables["tabela"];


Hvala puno svima koji su pomogli.
Pozdrav,
Vlada
 
Odgovor na temu

majstor_01

Član broj: 60008
Poruke: 63
*.ptt.yu.



Profil

icon Re: Pozivanje dataSeta koji se nalazi u drugoj Formi17.06.2007. u 13:45 - pre 205 meseci
To sto si uradio je pogresno. Zapravo pogresan dizajn.
Zasto?

Jer po tvom kodu ponovo kreiras i unis DataSet, i on nije isti u odnlus na onaj koji zelis da pozoves.
Da bi to radilo ispravno, moras da negde u kodu Forme1 zapamtis referencu Forme2, i onda da pozoves taj dataSet.

Pozdrav
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Pozivanje dataSeta koji se nalazi u drugoj Formi18.06.2007. u 15:11 - pre 204 meseci
Slazem se sa ovim, malo je preterano instancirati celokupan form samo da bi dobio dataset iz njega, narocito ako je taj dataset takav da ga korisnik nije menjao u Form1. Ako sadrzi samo podatke ucitane iz baze, onda bolje samo instanciraj sam DataSet u svojoj formi...
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.dsl.siol.net.



+1 Profil

icon Re: Pozivanje dataSeta koji se nalazi u drugoj Formi24.06.2007. u 19:35 - pre 204 meseci
Citat:
mmix: Slazem se sa ovim, malo je preterano instancirati celokupan form samo da bi dobio dataset iz njega, narocito ako je taj dataset takav da ga korisnik nije menjao u Form1. Ako sadrzi samo podatke ucitane iz baze, onda bolje samo instanciraj sam DataSet u svojoj formi...

Slazem se i ja sa ovim , ali to resenje je specificno za ovaj slucaj (dataset).

Generalna praksa bi bila napraviti staticno polje npr. "public static Form1 MyInstance" u samoj klasi Form1, zatim u konstruktoru za Form1 staviti "Form1.MyInstance = this".

Jos bolje, napraviti static property MyInstance:
Code:

        private static Form1 myInstance;
        public static Form1 MyInstance
        { 
          get { return myInstance; }
        }

        public Form1()
        {
            InitializeComponent();
            myInstance = this;
        }


Onda ti je u celom projektu na raspolaganju Form1.MyInstance, a samim tim i Form1.MyInstance.dataset1...

Naravno, ovde su i 2 logicna prerequisita...
1. dataset1 i sve ostalo sto ti treba u drugim klasama moraju imati modifier "public", ili napravi property koji omoucava samo "get" za sve sto ti treba (bolja opcija, jer onemogucavas da neko, pa cak i ti, poyebe reference na komponente forme).
2. arhitektura aplikacije mora biti takva da je uvek instanciran samo jedan form1 (tipicno kod STA aplikacija), u suprotnom Form1.MyInstance ce imati samo zadnji instancirani...
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Pozivanje dataSeta koji se nalazi u drugoj Formi25.06.2007. u 13:43 - pre 204 meseci
Ta budzevina koju si napisao je jedan deo "singleton" paterna. Drugi deo, koji te u stvari stiti od tacke 2 ti fali (singleton klase nemaju public konstruktore). Uzevsi u obzir da svi static objekti zive dok zivi aplikacija ili dok se eksplicitno ne obrisu, ne vidim situaciju u kojoj je stavljanje formova u kvazi-singleton patern prihvatljivo resenje koje nema bolju alternativu...
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.dsl.siol.net.



+1 Profil

icon Re: Pozivanje dataSeta koji se nalazi u drugoj Formi25.06.2007. u 14:09 - pre 204 meseci
Ok, ok... sheesh...

Code:

        private Form2()
        {
            this.InitializeComponent();
        }

        private static Form2 myInstance = null;
        public static Form2 MyInstance
        {
            get { return myInstance = myInstance ?? new Form2(); }
        }
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Pozivanje dataSeta koji se nalazi u drugoj Formi25.06.2007. u 15:11 - pre 204 meseci
Ok, dovoljno blizu

Medjutim, pogledaj sad nasu temu o dispose patternu i vidi koliko je dobro primenjivati ovakve metode. Cross-form koriscenje komponenti (ukljucujuci dataset-ove) ima smisla jedino kod parent-child formova (Ako Form1 instancira form2 pa mu prosledi svoj DataSet, mada je BindingSource preporucljiviji). Drzati eksterne reference na disposable objekte i/ili njihovu decu nije dobra praksa, bar po meni.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.dsl.siol.net.



+1 Profil

icon Re: Pozivanje dataSeta koji se nalazi u drugoj Formi25.06.2007. u 15:24 - pre 204 meseci
Znas kako, ja i verovatno neki odavde imamo praksu da sve sto se tice komunikacije sa bazom drzimo u jednoj klasi. Znaci ono, imas klijentsku aplikaciju, jednu dataset klasu i samo jednu instancu dataseta u celoj aplikaciji koju cuvas u nekom sigleton objektu koji ja cesto zovem deskriptivno "D" (ah taj Delphijev datamodule...) .

Onda radis D.Dataset.xyz, D.bindingSourceXyz.abc, D.ConnectToDb, D.GetServerDateTime...

Mozda to i nije najsrecniji pristup, ali mi je trenutno najbrze i najmanje error prone, dok ne napisem najzad svoj data framework za .net koji cu da koristim u svim aplikacijama. U slucaju ovakvog pristupa tacno znam sta radim, tako da necu disposovati D pre kraja aplikacije (a tada ni nije potrebno), tako da za te potrebe cak i onaj prvi kvazi-singleton nacin je i vise nego dovoljan. Nije kao da ne moze bolje, samo mozda nije potrebno bolje...

Poz, i hvala za tip sa private konstruktorom, ne bi mi nikad palo na pamet da je tako nesto moguce...
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12848



+4784 Profil

icon Re: Pozivanje dataSeta koji se nalazi u drugoj Formi25.06.2007. u 15:40 - pre 204 meseci
Umm, a sta je lose kod metode koju sam ja preporucio (u popravljenoj varijanti)?
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
*.sksyu.net.



+171 Profil

icon Re: Pozivanje dataSeta koji se nalazi u drugoj Formi26.06.2007. u 11:22 - pre 204 meseci
Citat:
_v!rus_: Znas kako, ja i verovatno neki odavde imamo praksu da sve sto se tice komunikacije sa bazom drzimo u jednoj klasi. Znaci ono, imas klijentsku aplikaciju, jednu dataset klasu i samo jednu instancu dataseta u celoj aplikaciji koju cuvas u nekom sigleton objektu koji ja cesto zovem deskriptivno "D" (ah taj Delphijev datamodule...) .


Ja je zovem Data, valjda

Inace i po meni ovaj pristup nije los iako u foramama drzim referencu na externi dataset ali tako dobijam na efikasnosti, performansama a i sam rad je olaksan. Naravno treba znati sta se desava sa referencama i objektima.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Pozivanje dataSeta koji se nalazi u drugoj Formi26.06.2007. u 12:38 - pre 204 meseci
@viris and nexgo:
Bejah ja jednom Delphi programer i secam se tih 'budzevina", jel to nesto npr kao ovo na slici dole Upravo sad se ubih ovde pokusavajuci da debugujem ovo krme od datamodula. Slazem se sa obojcom da taj pristup radi, ali po meni je taj pristup los jer verovatno niko sem tebe ne razume niti ce ikad razumeti kako to radi Narocito ako prvis ista kompleksnije od iks-oks igrice ili programa za licne cekove ili videklubove.
PS, forme u .netu nisu ekvivalent datamodula, ako hoces datamodul u .NETu onda se to radi rpeko Component-e, manji je overhead.




@shadowed: Tvoj pristup radi, moj komentar na celu ovu pricu je bio samo da je instanciranje celog forma samo i iskljucivo u svrhu dobijanja reference dataseta iz njega losa praksa.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
Prikačeni fajlovi
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
*.sksyu.net.



+171 Profil

icon Re: Pozivanje dataSeta koji se nalazi u drugoj Formi26.06.2007. u 13:30 - pre 204 meseci
Iskreno ne razumem ovo bas najbolje. Sta su datamoduli? Nisam radio u delphi tako da ne znam. Ova slika mi deluje nekako komplikovano. Kod mene je princip da imam jedan static DataSet koje sve forme vide, tako da mi nije potrebno nikakvo instanciranje formi da bi dosao do podataka.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Pozivanje dataSeta koji se nalazi u drugoj Formi26.06.2007. u 14:02 - pre 204 meseci
Datamodul je u Delphiu bio ono sto je Component u .NETu, prosto kolekcija pod-komponenti vizuleno predstavljena kroz ikonice koje mozes kofigurisati kroz dizajner. Ovo sto vidis na slici su delphi ekvivalenti .NETovim konekcijama, komandama, adapterima i datasetovima (nije MS to izmislio ), ja sam samo zamazo imena onih koji nisu za javnost .
Sa tom razikom sto su datasetovi bili vezani za jedan entity (nisi mogao vise tabela u jedan dataset) pa ne postoje dijagrami za iste. Veoma veoma retko je postojalo vise od jedne instance modula i vecina delphi programera nastavlja sa istom praksom u NETu. To se vrlo brzo otme kontroli...
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.zaslon-telecom.si.



+1 Profil

icon Re: Pozivanje dataSeta koji se nalazi u drugoj Formi26.06.2007. u 15:36 - pre 204 meseci
Citat:

PS, forme u .netu nisu ekvivalent datamodula, ako hoces datamodul u .NETu onda se to radi rpeko Component-e, manji je overhead.

Znam, znam, tako i koristim

Nego u vezi onog tvog krmeta, isto tako mozes i u .net-u da napravis dataset sa toliko tabela i bice jos crnji i zamrseniji, jer su pored imena tabela jos vidljive i polja i sve ostalo, tako da nije u tom slucaju datamodul kriv... "Losa praksa" postoji u svakom programskom jeziku/alatu.

I jos nesto, kad smo vec tu. Zanima me kako je uopste MS zamislio da se koristi Dataset u VS-u, da li *celu* bazu tj. model baze staviti u jedan Dataset, ili napraviti za svaki "logicki entitet" u aplikaciji po jedan dataset, npr. SubjektDataset koji sadrzi glavnu tabelu Subjekti linkovanu na podtabele SubjektiTelefoni, SubjektiXYZ, ...?


 
Odgovor na temu

[es] :: .NET :: Pozivanje dataSeta koji se nalazi u drugoj Formi

Strane: 1 2

[ Pregleda: 4316 | Odgovora: 20 ] > FB > Twit

Postavi temu Odgovori

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