Avatar billede mikkel_sommer Nybegynder
03. oktober 2006 - 09:41 Der er 8 kommentarer og
1 løsning

Repeater forsvinder ved postback

Jeg har en repeater hvori jeg har har genereret nogle controller.
Mit problem er at disse kontroller forsvinder efter et postback men mærligt nok kan jeg godt se dem hvis jeg klikker view source.

Er der en eller anden property som skal sættes for at de kan ses efter postback?
Avatar billede dr_chaos Nybegynder
03. oktober 2006 - 09:53 #1
Dynamiske controller skal altid gendannes og addes til f.eks. repeateren ved et postback.
Ellers forsvinder de.

Hvis det ikke er dynamisk kontroller.
Er det muligt at du skal sørge for at kalde databind på dem.
Avatar billede mikkel_sommer Nybegynder
03. oktober 2006 - 09:56 #2
Ok - men det undre mig bare at jeg så kan se dem i HTML sourcen...
Avatar billede dr_chaos Nybegynder
03. oktober 2006 - 10:04 #3
kontrollen bliver jo oprettet men der er ikke tilføjet noget data til den. (hvis ikke dynamisk).

Er det dynamiske eller statiske kontroller der er tilføjet til repeateren ?
Avatar billede mikkel_sommer Nybegynder
03. oktober 2006 - 12:59 #4
Jeg har repeateren som jeg dynamisk tilføjer kontroller til og disse kan ses i sourcen(også efter postback) bare ikke på siden.
Avatar billede dr_chaos Nybegynder
03. oktober 2006 - 13:06 #5
prøv at se om du kan finde de dynamisk kontroller evt med findcontrol.
Prøv lige at paste din kildekode til siden.
Avatar billede mikkel_sommer Nybegynder
04. oktober 2006 - 08:47 #6
aspx:
<asp:repeater id="Repeater1" runat="server" EnableViewState="True" OnItemDataBound="bind_ItemDataBound">
    <ItemTemplate>
        <table class="stepBody" cellSpacing="0" cellPadding="0" border="0">
            <tr valign="top">
                <td class="gWTD1">
                    <asp:Panel id="pnLabels" runat="server"></asp:Panel></td>
                <td class="gWEX2">
                    <asp:Panel id="pnControls" runat="server"></asp:Panel></td>
            </tr>
        </table>
    </ItemTemplate>
</asp:repeater><asp:panel id="pnErrorMessage" runat="server" Visible="False">


I ascx filen har jeg så metoden bind_ItemDataBound hvori jeg opretter to panels og add'er mine controls i dem:

Dim pnLabel As Panel = e.Item.FindControl("pnLabels")
Dim pnControl As Panel = e.Item.FindControl("pnControls")

Dim label As System.Web.UI.WebControls.Label = New System.Web.UI.WebControls.Label

        ' Assign text, id, and CssClass to the label
        label.Text = objDynRef.label
        label.ID = "lb" & objDynRef.drNumber
        label.CssClass = "label"

        ' Add the label to the label panel
        pnLabel.Controls.Add(label)


Dim textbox As System.Web.UI.WebControls.TextBox = New System.Web.UI.WebControls.TextBox
            textbox.ID = "tb" & objDynRef.drNumber

            ' Set size and max lenght on textfields
            textbox.Width = New System.Web.UI.WebControls.Unit("200px")

            ' Add the TextBox to the panel
            pnControl.Controls.Add(textbox)
Avatar billede mikkel_sommer Nybegynder
04. oktober 2006 - 08:49 #7
som det er nu har jeg:

Me.Repeater1.DataSource = list
Me.Repeater1.DataBind()

udenfor "Not IsPostBack" så det sker hver gang men problemet opstår hvis jeg sætter det ind i "Not IsPostBack" så det kun kører første gang siden køres(men elementerne ER der som sagt hvis jeg klikker view source).
Avatar billede dr_chaos Nybegynder
05. oktober 2006 - 07:50 #8
Du skal tilføje de dynamiske kontroller til panelerne  ved hvert postpack .

Panelerne vil være kendte men de dynamiske kontrollers levetid vil være udløbet når siden postesback
Avatar billede mikkel_sommer Nybegynder
09. januar 2007 - 13:55 #9
Lukker.
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