[ mihajlo radulovic @ 14.07.2010. 15:24 ] @
Koristim VB za generisanje textbox-ova u kombinaciji sa literal-ima u koje upisujem html. Kontrole pozicioniram u jedan Placeholder i za svaki novi red generisem novi placeholder kroz literal jer zelim da stornoj proceduri proslijedim podatke red po red. Problem se javlja jer ne mogu da procitam vrijednosti iz textbox-ova klasicnim putem jer jos ne postoje. Pretpostavljam da mogu prolaziti sa for each ali mi ne ide od ruke.

Ako se neko susretao sa ovim problemom, svaka pomoc mi je dobrodosla...
[ pl4stik @ 15.07.2010. 07:42 ] @
Probaj da razdvojis logiku od prezentacionog dela. Tako da bi trebalo da ispadne da umesto trazenja kontrola sve radis u kodu tj. po nekom kriterijumu filtrirash/racunas/etc... podatke, a u prezentacionom delu se ocekuje da korisnik nekom interakcijom blize definise npr. klikom sa kojim od tih plceholdera treba da radi to nesto...
Naravno da sve zavisi od situacije do situacije ali mislim da su ovo neke smernice koje bi trebalo da se postuju mada pravilo je da pravila nema ....
[ pl4stik @ 15.07.2010. 07:52 ] @
U principu ako pravish kontrole u kodu onda im verovatno znash i ID-eve pa mozes server side da im pristupash dok npr. ako ih smestish u grid ili repeater one se isto prave samo sto dobijaju autoprefikse za ID-eve, a ne definises ih ti (za svaki row) pa je tu malo teze da izvedesh logiku ali mozes da probash Gridview.Row
[ Zdravo_djaci @ 15.07.2010. 14:12 ] @
Kreiranje i prikaz kontrola verovatno radis u nekoj metodi i njihov broj je promenljiv.
Prilikom kreiranja kontrola mozes da ih imenujes sa nekim inkrementalnim sufiksom (tb1,tb2,tb3,tb4...).
Da bi te kontrole server video posle Post Backa moras ponovo da ih kreiras, tj da pozoves metodu za kreiranje u Page_Load.
Posle ce ti kontrole biti vidljive i moci ces da im pristupas preko ID-a u nekon eventu.
[ mihajlo radulovic @ 15.07.2010. 14:17 ] @
Mislim da se nismo razumjeli.
Dinamicki generisem kontrole odnosno redove sa kontrolama zato sto korisnik treba da odabere koliko odredjeni subjekat ima redova. Tacnije klikom na + dodajem jedan red sa kontrolama na formu.
Mala sam testirao i sve radi ok ako kontrole dodam na event Page_PreLoad, a ako kontrole kreiram na Button_Click, for each ne prepoznaje (ne prolazi kroz kontrole) na taj nacin kreirane kontrole.

Znam da istu stvar mogu rijesiti sa jednim redom kontrola i punjenjem u grid ali potrebne su mi i neke provjere sa javascript-om sto je lakse uraditi sa pojedinacnim kontrolama.
[ deerbeer @ 15.07.2010. 14:38 ] @
Citat:

Mala sam testirao i sve radi ok ako kontrole dodam na event Page_PreLoad, a ako kontrole kreiram na Button_Click, for each ne prepoznaje (ne prolazi kroz kontrole) na taj nacin kreirane kontrole.

Moras da imas sacuvano stanje za te kontrole .
Kad uradis button click - poziv ide prvo na PageLoad - pa onda na tvoj button-click hendler .
U page-load moras da popunis redove koji su prethodno dodati , pa se onda dodaje novi red kontrola .



[ Zdravo_djaci @ 15.07.2010. 15:21 ] @
Da bi event handler video te kontrole, prilikom post backa moras prvo opet da ih instanciras.
Napravi metodu koja ce da ti kreira te redove sa kontrolama (da ih prikazuje).
Tu metodu ces pozivati na Page_Load da bi ih event handler prepoznao po njihovim ID.





[ toxi_programer @ 16.07.2010. 12:20 ] @
Postavi jedan panel.
Napravi jedan integer koji pokazuje trenutan broj redova i čuvaj ga u viewstate-u, sesiji, url-u, kako hoćeš.
Napravi funkciju koja instancira određeni, dodatni, broj redova kontrola( broj tih redova određen je onim integerom). Dakle parametrom joj kažeš koliko dodatnih redova da instancira.
U Page_Init(object, eventargs) pozovi tu funkciju uvek( i kad je post back i kad nije), a predaješ onaj gore integer. Ovo ti je potrebno jer dinamički dodate kontrole "nestanu" zbog stateless prirode http-a. Kasnije će asp.net za tebe u te kontrole ubaciti vrednosti koje je koristik ranije uneo.
Napravi event OnClick za dugme "+", koje će samo inkrementirati integer koji pokazuje trenutni broj redova. Takođe ponovo pozovi funkciju za dodavanje i predaj joj da instancira onoliko redova za koliko si inkrementirao broj redova.

Ovo bi trebalo da radi i bez viewstate-a, što je jako zgodno. Predlažem da, ukoliko na stranici imaš i drugih ne-dinamički dodatih delova forme, gornju logiku izdvojiš u zasebne WebControl-e. Konkretno dve. Jedna koja bi predstavljala jedan red kontrola sa svim geterima za vrednosti i slično. Druga koja bi služila kao kontejner ovih prvih, u njoj bi se nalazila gore navedena logika. Napravi određeni interfejs koji će implementira ta kontrola, a koji će definisati sve funkcionalnosti koje ti trebaju.
Kod će ti biti dosta organizovaniji, a ukoliko budeš imao potrebe, implementaciju kontrola možeš lako zameniti.
[ mihajlo radulovic @ 19.07.2010. 10:11 ] @
Hvala puno toxi,
sve radi...