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

ASP.NET-PlaceHolder-UserControl-ViewState-Problem

[es] :: .NET :: ASP.NET :: ASP.NET-PlaceHolder-UserControl-ViewState-Problem

[ Pregleda: 4010 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

akrosoft
Dusan Mihajlovic
Beograd

Član broj: 31201
Poruke: 129
*.nat-pool.bgd.sbb.co.yu

Sajt: www.RoditeljPortal.com


Profil

icon ASP.NET-PlaceHolder-UserControl-ViewState-Problem16.08.2004. u 19:43 - pre 238 meseci
Imam aspx stranicu na koju sam postavio placeholder, u koji dinamicki dodajem razlicite user kontrole (ascx) prema potrebi pomocu:
Code:

PlaceHolder1.Controls.Add(LoadControl("modules/modPR.ascx"));

Kada se stranica prvi put ucita, user kontrola se lepo prikaze, medjutim, u user controli imam npr list box koji izaziva postback, i kada se to desi, nakon toga, placeholder u aspx stranici vise ne prikazuje user kontrolu. Ok, pretpostavljam da moram da ponovo ucitam kontrolu u placeholder na page_load ....posto mi se cini da nema drugog resenja, ali je problem sto ta user kontrola koja je sadrzala neke vrednosti u listboxu koje je korisnik promenio, sto je izazvalo postback, nakon ponovne inicijalizacije i ubacivanja u controls collection placeholdera ne pamti vrednosti koje je korisnik promenio u list boxu pre post backa.
Sta mi je ciniti??? Da li da negde pamtim viewstete UserControle ili PlaceHoldera, gde i kako, ili nesto trece?

Thx
 
Odgovor na temu

havramm
Miroslav Havram
Software Developer / Engineer
Beograd

Član broj: 4603
Poruke: 255
212.62.55.*



Profil

icon Re: ASP.NET-PlaceHolder-UserControl-ViewState-Problem16.08.2004. u 22:24 - pre 238 meseci
Pogledaj prikacenu arhivu. Da li ti to mozda resava stvar?

Stavio sam da se korisnicka kontrola izmedju dva PostBack-a cuva u objektu sesije.

Probaj pa javi.
If it's a girl then they're gonna call it Sigourney, after an actress. If it's a boy, then they're gonna call it Rodney, after Dave!
Prikačeni fajlovi
 
Odgovor na temu

spartak

Član broj: 5625
Poruke: 631
*.yubc.net



+3 Profil

icon Re: ASP.NET-PlaceHolder-UserControl-ViewState-Problem17.08.2004. u 08:02 - pre 238 meseci
Pretece me kolega :-)

Elem Dule, predlazem takodje snimanje viewstate u sesiju pa kad ponovo ucitas kontrole postavis njihovo stanje iz snimljenog viewstate.

Interna sala: Osim ukoliko nemas sedamhiljadaosamstotridesetpetu stored procedure koja ce sve to da radi :-)
 
Odgovor na temu

esnaf

Član broj: 9417
Poruke: 43
*.fiberop.matgnet.com



Profil

icon Re: ASP.NET-PlaceHolder-UserControl-ViewState-Problem17.08.2004. u 08:42 - pre 238 meseci
Citat:
akrosoft: Imam aspx stranicu na koju sam postavio placeholder, u koji dinamicki dodajem razlicite user kontrole (ascx) prema potrebi pomocu:
Code:

PlaceHolder1.Controls.Add(LoadControl("modules/modPR.ascx"));

Kada se stranica prvi put ucita, user kontrola se lepo prikaze, medjutim, u user controli imam npr list box koji izaziva postback, i kada se to desi, nakon toga, placeholder u aspx stranici vise ne prikazuje user kontrolu. Ok, pretpostavljam da moram da ponovo ucitam kontrolu u placeholder na page_load ....
Thx


Sto se tice prkazivanja kontrole na PostBack stvar je jednostavna:
VB.NET
Code:

If Page.IsPostBack
'code za postback
Else 
'code za prvo ucitavanje strane
End If


 
Odgovor na temu

havramm
Miroslav Havram
Software Developer / Engineer
Beograd

Član broj: 4603
Poruke: 255
212.62.55.*



Profil

icon Re: ASP.NET-PlaceHolder-UserControl-ViewState-Problem17.08.2004. u 09:52 - pre 238 meseci
Citat:
spartak: Elem Dule, predlazem takodje snimanje viewstate u sesiju pa kad ponovo ucitas kontrole postavis njihovo stanje iz snimljenog viewstate.

Ja sam stavio da se "cela" kontrola čuva u session:
Code:
Control ctrl = LoadControl("NekaUserControla.ascx");
...
Session["UserControl"] = ctrl;

i zatim kada se ponovo učitava:
Code:
if (Session["UserControl"] != null)
{
    Control ctrl = Session["UserControl"] as Control;
    ...
    PlaceHolder1.Controls.Add(ctrl);
}


Baš bi me zanimalo ako uspevaš samo viewstate (tj. stanje kontrole) da sačuvaš, kako bi to odradio?

P.S. Nije ironično pitanje, stvarno me interesuje, pošto to još nisam probao.
If it's a girl then they're gonna call it Sigourney, after an actress. If it's a boy, then they're gonna call it Rodney, after Dave!
 
Odgovor na temu

spartak

Član broj: 5625
Poruke: 631
*.yubc.net



+3 Profil

icon Re: ASP.NET-PlaceHolder-UserControl-ViewState-Problem17.08.2004. u 10:20 - pre 238 meseci
Pogresno sam se izrazio, mislim na istu stvar kao i ti.

Koliko sam razumeo problem, on svaki put ucitava iznova kontrolu u placeholder (posle postback), sto je naravno svaki put nova instanca tog tipa, zar ne.

Osim ukoliko je ucita iz viewstate, kada ce dobiti "staru" instancu.
 
Odgovor na temu

havramm
Miroslav Havram
Software Developer / Engineer
Beograd

Član broj: 4603
Poruke: 255
212.62.55.*



Profil

icon Re: ASP.NET-PlaceHolder-UserControl-ViewState-Problem17.08.2004. u 10:31 - pre 238 meseci
Citat:
spartak: Osim ukoliko je ucita iz viewstate, kada ce dobiti "staru" instancu.

Opet se osećam zbunjeno . viewstate = Session ?
If it's a girl then they're gonna call it Sigourney, after an actress. If it's a boy, then they're gonna call it Rodney, after Dave!
 
Odgovor na temu

spartak

Član broj: 5625
Poruke: 631
*.yubc.net



+3 Profil

icon Re: ASP.NET-PlaceHolder-UserControl-ViewState-Problem17.08.2004. u 10:58 - pre 238 meseci
:-) A je, radim pet stvari istovremeno.

Odzbuni se slobodno, lapsus je u pitanju.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: ASP.NET-PlaceHolder-UserControl-ViewState-Problem17.08.2004. u 11:00 - pre 238 meseci
Citat:
havramm: Opet se osećam zbunjeno . viewstate = Session ?


Naravno da nije isto ViewState ide u sam HTML stranice, Session se čuva na serveru...

Citat:
spartak: Koliko sam razumeo problem, on svaki put ucitava iznova kontrolu u placeholder (posle postback), sto je naravno svaki put nova instanca tog tipa, zar ne.


Tačno, ali to se UVEK dešava u SVIM aspx stranicama, na svaki zahtev se iznova kreiraju sve kontrole na stranici, ali se u slučaju da je EnabledViewState uključen njihovo interno stanje se vraća u stanje koje je bilo pri renderovanju htmla.

Citat:
havramm: Pogledaj prikacenu arhivu. Da li ti to mozda resava stvar?
Stavio sam da se korisnicka kontrola izmedju dva PostBack-a cuva u objektu sesije.


Nema potrebe za ovim, view state rešava ovaj problem koji njega muči...
Okačio sam ti jednu stranicu sa placehodlerom i dugmetom i jednu user kontrolu koja se puni na !PostBack i ovo radi savršeno preko viewstate-a

Citat:
akrosoft: Imam aspx stranicu na koju sam postavio placeholder, u koji dinamicki dodajem razlicite user kontrole (ascx) prema potrebi pomocu:
Code:

PlaceHolder1.Controls.Add(LoadControl("modules/modPR.ascx"));

Kada se stranica prvi put ucita, user kontrola se lepo prikaze, medjutim, u user controli imam npr list box koji izaziva postback, i kada se to desi, nakon toga, placeholder u aspx stranici vise ne prikazuje user kontrolu. Ok, pretpostavljam da moram da ponovo ucitam kontrolu u placeholder na page_load ....


Dobro pretpostavljaš, svaki put moraš da uradiš LoadControl bez obzira na postback. Tebi ne radi zato što jedna ili više od sledećih stavki nije ok:

1. PlaceHolder1.EnableViewState na glavnoj strani mora da je true
2. Pređi u HTML prikaz glavne strane, u liniji na vrhu koja počinje sa <% Page ... ne sme da stoji EnableViewState="false"
3. Ako gornja stavka uopšte ne postoji, pogledaj web.config fajl, ne sme da postoji linija <pages EnableViewState="false">
4. U kontroli, listbox-ov EnableViewState mora da bude true
5. Pređi u HTML prikaz kontrole, u liniji na vrhu koja počinje sa <% Control ... ne sme da stoji EnableViewState="false"

AKo su ti svih pet stavki ispunjene, ViewState mora da zapamti sadržaj listbox-a. Ako ti ni posle ovog ne radi, okači aspx i cs za glavnu stranu i kontrolu pa da vidimo šta je...

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

akrosoft
Dusan Mihajlovic
Beograd

Član broj: 31201
Poruke: 129
*.nat-pool.bgd.sbb.co.yu

Sajt: www.RoditeljPortal.com


Profil

icon Re: ASP.NET-PlaceHolder-UserControl-ViewState-Problem17.08.2004. u 11:29 - pre 238 meseci
Citat:
havramm: Stavio sam da se korisnicka kontrola izmedju dva PostBack-a cuva u objektu sesije.

Ok, hvala, palo je meni to na pamet, ali je problem sto session varijable opterecuju serverske resurse. A i zasto to raditi kada se po automatizmu, ako je enableViewSession za user kontrolu setovan, cuva state data user kontrole u viewstate-u. Sto kaze Milos, moguce je da cuvam i session varijable u bazi, ali to sa druga strane utice na brzinu web aplikacije.

Citat:
spartak:
Elem Dule, predlazem takodje snimanje viewstate u sesiju

Da bih snimao viewstate user kontrole ona mora biti Serializable, sto mi ne odgovara.
Citat:
esnaf:
Sto se tice prkazivanja kontrole na PostBack stvar je jednostavna:

Nije bas tako jednostavna, IsPostBack user kontrole prakticno radi base.IsPostBack stranice u koju je ugnjezdena UserKontrola, tako da ce vracati true i ako je user kontrola prvi put ucitana a glavna (template) stranica postbackovana. Ok, to sam resio overridovanjem LoadViewState user kontrole:

Code:

private bool _FirstLoad = true;
private void Page_Load(object sender, System.EventArgs e)
{
    if (_FirstLoad)    
        PopulateData(); 
}
protected override void LoadViewState(object savedState)
{
    _FirstLoad = false;
    base.LoadViewState (savedState);
}


Citat:
spartak:
Koliko sam razumeo problem, on svaki put ucitava iznova kontrolu u placeholder (posle postback)

Bez obzira da li je postback, moram uvek da je ucitavam, nema druge koliko znam, probaj da stavis placeholder na stranicu, i uradi postback stranice i videces da ce se placeholder, controls kolekcija isprazniti.
Citat:
mmix:
AKo su ti svih pet stavki ispunjene, ViewState mora da zapamti sadržaj listbox-a. Ako ti ni posle ovog ne radi, okači aspx i cs za glavnu stranu i kontrolu pa da vidimo šta je...

Svi moguci enableViewState su mi ukljuceni, tesko mi je da izdvojim taj deo da zakacim kod, posto ima dosta stvari koje su zavisne od baze, pa cu pokusati posle da napravim malu simulaciju toga i da okacim.

Hvala svima.....

 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: ASP.NET-PlaceHolder-UserControl-ViewState-Problem17.08.2004. u 11:35 - pre 238 meseci
Citat:
akrosoft: Svi moguci enableViewState su mi ukljuceni, tesko mi je da izdvojim taj deo da zakacim kod, posto ima dosta stvari koje su zavisne od baze, pa cu pokusati posle da napravim malu simulaciju toga i da okacim.
Hvala svima.....

Probaj da u tu tvoju aplikaciju u root ubaciš stranicu i user kontrolu koju sam okačio i reci da li ti radi, da odmah eliminišemo pola problema...

Citat:
akrosoft: Nije bas tako jednostavna, IsPostBack user kontrole prakticno radi base.IsPostBack stranice u koju je ugnjezdena UserKontrola, tako da ce vracati true i ako je user kontrola prvi put ucitana a glavna (template) stranica postbackovana. Ok, to sam resio overridovanjem LoadViewState user kontrole:


Hmmm, nisi u pravu. kontrola poziva base.IsPostBack, ali base je ovde tebi System.Web.UI.UserControl, čiji IsPostBack poziva IsPostBack svog kontejnera a to je System.Web.UI.Page tj. tvoja glavna strana koji će ti vratiti pravu vrednost. Meni definitivno tako radi, sad si me bio zbunio pa sam single-stepovo kroz Page_Load kontrole... Dakle usercontrol.IsPostBack je uvek isto što i Page.IsPostBack strane u koju je kontrola učitana...


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

akrosoft
Dusan Mihajlovic
Beograd

Član broj: 31201
Poruke: 129
*.nat-pool.bgd.sbb.co.yu

Sajt: www.RoditeljPortal.com


Profil

icon Re: ASP.NET-PlaceHolder-UserControl-ViewState-Problem17.08.2004. u 11:52 - pre 238 meseci
Citat:
mmix: Hmmm, nisi u pravu. kontrola poziva base.IsPostBack, ali base je ovde tebi System.Web.UI.UserControl, čiji IsPostBack poziva IsPostBack svog kontejnera a to je System.Web.UI.Page tj. tvoja glavna strana koji će ti vratiti pravu vrednost. Meni definitivno tako radi, sad si me bio zbunio pa sam single-stepovo kroz Page_Load kontrole... Dakle usercontrol.IsPostBack je uvek isto što i Page.IsPostBack strane u koju je kontrola učitana...

Na to sam mislio, pogresio sam sa base, mislio sam na container.......Ali je sustina u tome sto ce IsPostBack user kontrole vratiti isto vrednost kao i page isPostBack. Tu je zez, ako imas template page sa place holderom ciji se sadrzaj menja, ucitavaju se razne user kontrole, npr, bila je ucitana UC1 i na button click strane ucitavam UC2, postback u UC2 ce mi uvek vratiti true i ako se UC2 prvi put ucitava. Jel tako?
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: ASP.NET-PlaceHolder-UserControl-ViewState-Problem17.08.2004. u 11:54 - pre 238 meseci
Ah, čekaj, čekaj, nismo se mi dobro razumeli, tvoja glavna strana prvi put učitava user kontrolu posle postbacka na osnovu nekog odabira korisnika?
Moram da te razočaram da user kontrole nisu dizajnirane za taj način rada. Suviše je uvezana za template stranicu da bi ti radilo ovako. One su jednostavno dizajnirane da SVAKI put budu učitane u glavnu stranicu...

Napravi metod u user kontroli koji će da puni podacima child kontrole i kad prvi put uradiš LoadControl iz glavne, pozovi taj metod jedanput, posle će viewstate preuzeti... Page_Load kontrole ostavi "prazan".
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

akrosoft
Dusan Mihajlovic
Beograd

Član broj: 31201
Poruke: 129
*.nat-pool.bgd.sbb.co.yu

Sajt: www.RoditeljPortal.com


Profil

icon Re: ASP.NET-PlaceHolder-UserControl-ViewState-Problem17.08.2004. u 12:32 - pre 238 meseci
Ok, resio sam stvar, valjda.....:)
Fora je u tome sto da bi se restorovao view state kontrle u place holder trebaju da budu ucitane u page_load stranice. Koncepcija je bila da imam template stranicu sa menijem i placehlderom, i u zavisnosti od selektovanog menu itema ucitavam neku user kontrolu u dogadjaju clikck menu itema. E, kada sam prebacio ucitavanje user kontrole iz dogadjaja click menu itema, u dogadjaj Page_load template stranice (be obzira na post back, uvek moram ponovo da ucitam), sve radi ok, odnosno viewState user kontrole se automatski restoruje i ako ponovo radim Load kontrole. To me je u principu i zbunjivalo, jer sam mislio da na ponovni load viewState nece moci da se restoruje, ali mali je pametniji nego sto sam mislio :). Naravno, u Page_load pratim koji je meni selektovan i prema tome ucitavam odredjenu user kontrolu.

Btw, nije direktno vezano za prvobitan problem, ali:
Citat:
mmix: Napravi metod u user kontroli koji će da puni podacima child kontrole i kad prvi put uradiš LoadControl iz glavne, pozovi taj metod jedanput, posle će viewstate preuzeti... Page_Load kontrole ostavi "prazan".

...mislis da je to bolja varijanta nego da overridujem LoadViewState user kontrole, i da u njega upisujem _FirstLoad vrednost i na osnovu toga u load user kontrole filujem podatke?
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: ASP.NET-PlaceHolder-UserControl-ViewState-Problem17.08.2004. u 13:53 - pre 238 meseci
Citat:
akrosoft
...mislis da je to bolja varijanta nego da overridujem LoadViewState user kontrole, i da u njega upisujem _FirstLoad vrednost i na osnovu toga u load user kontrole filujem podatke?


AKo se ne varam (probaj sa break pointima), ali _FirstLoad ti je private bool i biće postavljen na true pri svakom učitavanju user kontrole, pa će, ako se ne varam, PopulateData() biti pozvan svaki put bez obzira na postback...


Izmena: Varam se :), radi ok. LoadViewState event se ne podiže na prvi load. To opet znači da prokletinja zna kad je prvi put učitana, mogli su baš i da publikuju tu vrednost za user kontrole, baš zbog ovakve situacije...

[Ovu poruku je menjao mmix dana 17.08.2004. u 16:30 GMT]
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

akrosoft
Dusan Mihajlovic
Beograd

Član broj: 31201
Poruke: 129
*.nat-pool.bgd.sbb.co.yu

Sajt: www.RoditeljPortal.com


Profil

icon Re: ASP.NET-PlaceHolder-UserControl-ViewState-Problem17.08.2004. u 14:27 - pre 238 meseci
Da, prilikom inicijalizacije kontrole _FirstLoad ce biti postavljen na true, ali nakon toga, a pre Page_Load ce uci u LoadViewState i postaviti ga na false prilikom postbacka kontrole. Koliko vidim, postavljajuci break point, u LoadViewState ulazi samo prilikom post backa kontrole, tako da prilikom inicijalnog loadovanja kontrole _FirstLoad na inicijalnoj vrednosti (true), a u ostalim slucajevima ce mu se promeniti inicijalna vrednost na false pre Page_load-a.
 
Odgovor na temu

[es] :: .NET :: ASP.NET :: ASP.NET-PlaceHolder-UserControl-ViewState-Problem

[ Pregleda: 4010 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

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