Avatar billede neoman Novice
05. august 2007 - 20:38 Der er 1 kommentar og
1 løsning

Hvornår kan man ændre Item i databound repeater ?

Jeg har en repeater jeg binder til en SqlDataSource. Jeg har brug for at foretage en ændring i den sidste item - og kun den (og ej helelr i footeren).

Jeg kan ikke bruge ItemDataBound eventet, fordi den på det tidspunkt endnu ikke ved hvor mange items der kommer i alt (Repeater1.Items.Count vokser med 1 i hvert ItemDataBound)

Hvis jeg lægger dette i PageLoad


        Repeater1.DataBind()
        Dim myLiteral As Literal
        myLiteral = CType(Repeater1.Items(Repeater1.Items.Count - 1).FindControl("ltrSolution"), Literal)
        myLiteral.Text = "xxxxzzzz" & Repeater1.Items.Count

så  kan jeg steppe igennem koden med debuggeren, og alt ser korrekt ud, men min ltrSolution forbliver uændret når den renderes. Feltet ltrSolution er ikke databundet på nogen måde, men et som jeg har tilføjet til Item Templaten i ASPX filen.

Hvis jeg lægger samme kode i PreRender(men det vil jeg ikke af forskellige årsager), så virker det : ltrSolution får den nye tekst.

Repeateren bliver ellers ikke rørt på nogen måde mellem pageload og prerender. Hvis jeg fjerner repeater1.databind fra prerender, så får jeg en fejl (fordi den simpelthen endnu ikke er databound).

Hvad pokker sker der her ? Jeg havde indtrykket af, at jeg kunne gøre hvad jeg har lyst til med en repeaters items mellem databind og render, men nu er der tilsyneladende ugler i mosen. Nogen som har en forklaring ?
Avatar billede neoman Novice
05. august 2007 - 22:04 #1
Nu har jeg skåret alt væk, så har kun sqldatasource + repeater tilbage.
Hvis jeg kalder Repeater1.Databind i PageLoad, så bliver den databound der, men også en gang til på et senere tidspunkt !! (Det ved jeg i og med at den løber igennem sættet af ItemDataBound en gang til. Hvorfor pokker gør den det ?

Hvis jeg i stedet for kalder Repeater.DataBind i PreRender, så bliver den kun databound een gang, som ventet.
Avatar billede neoman Novice
05. august 2007 - 23:26 #2
Problemet er "løst".

Repeaterens SqlDataSource har nogle ControlParameters. Værdierne hentes i tre textboxe, som hver har en fast værdi (i udviklingsfasen), hardcodet i textBox.Text. Af en eller anden årsag er værdierne ikke "klare" i PageLoad, tilsyneladende, og repeateren databindes 2 gange. Hvis jeg erstatter @param1 og @param2 med faste værdier i SQL sætningen, eller f.eks.i  <asp:parameter defaultvalue="xx"...

Hvorfor det er sådan skal nok forblive et mysterium.
så kører det - repeateren bindes kun een gang.
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