Programiram v c# že nekaj časa, v asp.net sem pa začetnik, kot tudi v web programiranju na splošno.
V xml datoteki imam določene podatke za vsak dan. Na strani imam statično Calendar controlo. Namen je, da ko kliknem na določen datum, se za ta dan pokažejo podatki zbrani v xml. To mi je nekako uspelo narediti (v event handlerju od koledarja (SelectionChanged) dinamično naredim kontrole za prikaz podatkov).
Problem je nastal, ko sem probal implementirati funkcionalnost za dodajanje podatkov za izbran datum. Lotil sem se tako, da uporabnik izbere datum, nato pa pritisne button, ki dinamično ustvari kontrole, ki so potrebne za vnos podatkov. Ena od teh kontrol je tudi Submit button, vendar se njegove dinamično določen eventhandler (submitbutton.click += submitbutton_click;) na sproži! Mislim, da je to zato, ker je sam gumb ustvarjen v eventhandlerju neke druge kontrole.
Problem sem poskušal rešiti na več načinov, najbolj obetaven je bil, da kontrole potrebne za dodajanje ustvarim in inicializiram v Page_Load in jih naredim nevidne, ko pa uporabnik pritisne gumb NovZapis pa jih prikažem. Vendar pa sem pri tej rešitvi naletel na nove probleme, ki pa so zelo nekonsistentni: vsake toliko enostavno ne prikaže podatkov za določen dan, kdaj pa kdaj pokaže napačne podatke, včasih pa se mi zdi da so podatki zamešani med trenutno izbranim dnevom in prejšnim :S
Vem, da je osnovni problem aplikacije slab design, ampak vseeno bi rad tale projekt speljal brez dodatnega dela (MVC,...).
Vesel bi bil tudi kakšnih splošnih napotkov (kdaj narediti dinamične kontrole na strani, katere stvari se ponavadi da v onInit, onpreInit in onload metode,...)
Kode žal ne morem postati, ker:
1. je to samo moj del večjega projekta in kode je ogromno
2. je to služben projekt
Komurkoli, ki je pripravljen pomagati, lahko dodatno pojasnim probleme oz. način moje implementacije.
hvala
lp
AlienX
AlienX - sreda, 16. maj 2007
uff, hvala za hiter odziv... torej, za podatkovni vir ne bo XML ampak skoraj sigurno sql server. Glede podatkov pa je tako: vse skupaj si lahko predstavljaš kot urnik, za določen dan imaš lahko več obveznosti - faks od 10h do 14h, služba od 15h do 20h, itd.Vsaka obveznost ima časovno obdobje, vrsto obveznosti (faks,...), in opis. Na določen dan pa imaš lahko neomejeno različnih (ali enakih) obveznosti - vsaj takšna predpostavka je v poslovni logiki. Sedaj imam to rešeno tako, da sem naredil web user control, ki deluje v dveh načinih: readonly in write. Pri prvem se v tabelo je nameče tekst iz podatkovne baze. Za write način pa se v tabelo postavijo textboxi in combobox za vrsto obveznosti. Ko uporabnik pritisne na datum se Placeholder na strani napolni z temi controlami, pač odvisno od podatkov. Vendar jaz rabim nekako narediti, da se submit gumb odzove na klik, torej nekako v page_load ustvariti vse potrebne controle, vendar ne vem kako, ker takrat še ne vemo kateri datum je bil pritisnjen. Glede tistega čudnega buga: rešeno. v placeholderju sem izključil viewstate. aja: glede formview-a: mislim da bi v vsakem primeru potreboval dinamične kontrole, ker bi moralo biti več teh formview-ov (eden na obveznost).lpAlienX
bojanv - sreda, 16. maj 2007
Razumem tvoj problem..dinamične kontrole so v asp.net-u vedno problem...vprasanje je samo ali jih rabis...daj mi tocno napisi, kaj potrebujes za prikaz..en sample xml-a (ni nujno, da je enak, samo priblizen) pa ti posljem kodo ( lahko bi nakladal tle, samo je boljse ce vidis kodo pa pole razlozim)....z dogodki je vedno problem, priporočljivo je, da daš v drugi event na pageu....se da z drugimi kontrolami to boljse resit, recimo s kakim formsview-om...Lahko mi posljes kr na private message ali pa ce post-as kr tle ali pa na mail....v profilu je napisan....