Avatar billede stefan_v Nybegynder
07. marts 2005 - 14:41 Der er 6 kommentarer og
1 løsning

Opdatering af side - Placeholder-problem

Jeg har et site, som er grundlæggende består af to placeholders.
Dene ene placeholder indeholder nogle HtmlInputButtons, og fungerer, som faneblade.
Den anden placeholder er indholdet af siden (content).

Når der klikkes på en knap, køres følgende java script:
function activeTabNumber( active_tab_number )
{
  Form_main.hidden_active_tab_number.value = "" + active_tab_number;
  Form_main.submit();
}

Hvor active tabnumber bestemmer hvilken tab der klikket på.
Hvilket data der skal i placeholderen( En tabel opbygges ) bestemmes i en switch i PageLoad. Data hentes fra an MySql-DB og opbygges i en tabel, som så bliver indsat i placeholderen.

Problemet:
Klikkes på et faneblad (HtmlInputButton) vises de nye data ikke... Jeg kan debugge mig frem til at de rigtige data hentes op fra db, men placeholderens data bliver aldrig vist.

Klikker jeg på den knap, som i første omgang tegner siden, opdateres data korrekt.

Er der én der kan forklare mig, hvad jeg gør galt?

Jeg kan næsten gætte mig til at der er et manglende  postbackevent, som gør at siden ikke opdateres, men hvad gør man med det?

Tak for det.
Stefan
Avatar billede snepnet Nybegynder
07. marts 2005 - 19:14 #1
hej stefan :o)

må vi se din page_load ?
(og gerne en metode der viser hvordan du lægger indhold i din placeholder via din switch).

og lige et spørgsmål... hvordan kan det være du gør det via et javascript - istedet for bare at abbonere på et serverside click-event, når du nu laver arbejdet på serveren alligevel.

mvh
Avatar billede stefan_v Nybegynder
08. marts 2005 - 10:28 #2
naturligvis!

mht. client-side delen, er det fordi sidens design er opbygget ekstremt dynamisk. En "ægte" postback-event ville være mere eller mindre katestrofalt :-/
Istedet bruges hidden fields til at gemme forskellige "states", fx Hvilket faneblad der er aktivt m.fl.

Brudt ned er det noget der ligner:

Page_Load(...)
{
this.ActiveTabNumber = this.hidden_ActiveTabNumber.value;
build_page();
}

private void buildPage(  )
{
switch(...)
case 1:
/**/
case 2:
this.setActiveTab( this.ActiveTabNumber );
this.PlaceHolder_Content.Controls.Clear();
ContentClass cc = new ContentClass();
this.PlaceHolder_Content.Controls.Add( cc.DrawContent(this.ActiveTabNumber) );
}

Selve faneblad-knappen gør følgende java script:
på sin "onclick":

function activeTabNumber( active_tab_number )
{
Form_main.hidden_ActiveTabNumber.value = "" + active_tab_number;
Form_main.submit();
}

Ideen er så (Og det virker andre steder...) at siden poster back, kører page_load -> buildPage() og alt er godt... Men det er det ikke... Placeholderen opdaterer aldrig sit indhold (selvom jeg kan se at den har fået dem...)

Ved fx at indsætte en ekstra control i placeholderen, når et bestemt faneblad aktiveres, kan jeg se at den skifter indhold... bare ikke det jeg henter fra db...

Jeg synes det er meget spøjst... Nærmest træls...
Avatar billede stefan_v Nybegynder
08. marts 2005 - 11:08 #3
UPDATE:

Jeg skiftede mine HtmlInputButtons ud med "rigtige" buttons - og nu opdatere den korrekt. Så det er stensikkert at problemet er et post-back problem.

Som beskrevet før har jeg lignende sider, hvor problemet er lige omvendt mht. typen af postback :-/
Avatar billede snepnet Nybegynder
08. marts 2005 - 21:59 #4
hej igen stefan :o)

det ser rigtig spændende ud, men jeg tror ikke jeg sådan helt er med på alt hvad du skriver ... det virker sådan lidt inforstået noget af det - eller også er det bare mig der er lidt tung i det...

"Placeholderen opdaterer aldrig sit indhold (selvom jeg kan se at den har fået dem...)" - hvad er dem for nogle, og hvordan kan du se at placeholderen har fået dem ?

"Ved fx at indsætte en ekstra control i placeholderen, når et bestemt faneblad aktiveres, kan jeg se at den skifter indhold... bare ikke det jeg henter fra db..." - der er ikke sådan rigtig noget af det du har sendt, som har noget med en database at gøre.
skal jeg udlede at ContentClass.DrawContent(...) på baggrund af parameteren suger i en database og genererer et kontroltræ ud fra det der bliver hentet op eller ?

jeg tror heller ikke jeg er helt med på den her :
"Ideen er så (Og det virker andre steder...)" - hvis du har det op at rulle andre steder... har du så ikke en forskel i det der ikke virker, som du "bare" kan få ryddet af vejen ?

nå.... men jeg er bange for at jeg er lidt i vildrede her, som du nok kan høre :o)
jeg vil dog meget gerne hjælpe med det, og hvis du smider din din mailadresse - eller måske en messengerkonto ell. kan vi måske udveksle lidt der, og forhåbentlig kunne lægge en løsning ud her.

men en helt anden ting.... "fanablads-kontroller" er der lavet en hel del af, og der er flere der ligger til gratis download på nettet.. Desuden mener jeg at der findes et udmærket eksempel på en implementering af en custom control i form af en fanabladskontrol.
og slutteligt, så ligger der en sådan kontrol i Internet Explorer Server Controls - en ms-pakke der kan downloades (og som også indeholder kildekoden).
du kan også se et principielt eksempel her :
http://eksperten.dk/spm/519579
(er dog mere en slags wizard - men principperne kan snildt bruges til et fanebladssystem).

nå - men du kan jo lige skrive hvad du vil... om du vil have nogle links til noget af det jeg skrev om - om du gerne vil have jeg kigger på koden eller.... ? - du siger bare til :o)

mvh
snep
Avatar billede snepnet Nybegynder
07. september 2005 - 17:47 #5
hej stefan - jeg smider et svar her i tilfælde at du kunne bruge ovenstående til noget :o)
mvh
Avatar billede stefan_v Nybegynder
07. september 2005 - 23:44 #6
Ja, den var sgu ikke for fed - "det" (hvad det så end var ;) ) kom til at virke med en masse hidden fields, som blev lavet om til ViewState... Det hele blev revet rundt og kører nu igennem UserControls and what-not :)

Tak for hjælpen, og lad så få rundet den her af :)
Avatar billede snepnet Nybegynder
07. september 2005 - 23:50 #7
:o) - sig til hvis der er noget jeg kan hjælpe med.
mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB