Kanske detta fungerar Du kan testa detta (lite pseudokod): En Placeholder är ett objekt. Du kan instantiera en klass av den (eller kopiera en befintlig), och därefter lägga till den till ett annat formulärs (eller annan kontrolls) Controls-samling. Min class Har du testat att köra det där under OnPreRender-eventet? Dynamiskt tillagda kontroller måste också läggas till vid varje postback eftersom de läggs till efter att kontrollträdet har sparats. Det fungerar att lägga till dynamiska labels, textboxar direkt i en placeholder via ascx:en utan problem. Upprepar mitt svar: Endast denna delen ska köras OnPreRender: om jag kör i Page_PreRender och sätter Public _Plh as new placeholder så funkar det. OnPreRender och Page_PreRender är nästan samma sak, beror på om man kör "override" eller inte. Föreslår att du markerar denna tråd som "löst". Sen får du gärna ställa ytterligare frågor om eventhantering med mera! :)Skapa en textbox i en class
Jag använder mig av placeholder för att publicera mina dynamiska textboxar. Nu vill jag skapa upp dessa textboxar i en class som sedan transportera över dem till placeholdern på min sida.
Hur kan man lyckas med det ?Sv: Skapa en textbox i en class
<code>
Public Function PLH() As PlaceHolder
PLH = Nothing
Dim lb_b As New textbox
With lb_b
.ID = "lbb_"
.Text = "Tot "
.Width = "150"
End With
With PLH.Controls
.Add(lb_b)
End With
End Function
</code> Sv: Skapa en textbox i en class
<code>
public void InjectTextBoxes(ref Placeholder)
{
TextBox minRuta = new TextBox();
Placeholder.Controls.Add(minRuta);
}
</code>Sv: Skapa en textbox i en class
Sv:Skapa en textbox i en class
<code>
Imports Microsoft.VisualBasic
Public Class grid_col
Public Nr As Integer
Public Id As String
Public ImageUrl As String
Public Href As String
Public Caption As String
Public Caption_Css As String
Public Text As String
Public Text_Css As String
Public MaxLength As Integer
Public Witdh As Integer
Public EditType As Motor
Public Visible As Boolean
Public _Plh As PlaceHolder
Public Sub MAKEPLH()
Dim lbu As New Label
With lbu
.ID = Id
.Text = Text
.Width = Witdh
End With
With _Plh.Controls
.Add(lbu)
End With
End Sub
End Class
</code>
i min ascx gör jag följande :
<code>
Dim objCol As New grid_col
With objCol
.Id = "234_"
.MaxLength = 255
.EditType = grid_col.Motor.Normal
.Text = "Hej"
.Text_Css = "Tjoho"
.Visible = True
.Caption = "namn"
.Caption_Css = "Tjoho_cap"
End With
objCol.MAKEPLH()
PlaceHolder1.Controls.Add(objCol._Plh)
</code>
Vad är galet. Varför får jag inte fram en label med texten "Hej" ?Sv: Skapa en textbox i en class
Sv:Skapa en textbox i en class
Problemet är att det inte går att skapa upp dem i en class och sedan kopiera ut dem i placeholdern i ascx:en.Sv: Skapa en textbox i en class
Har du testat att köra det där under OnPreRender-eventet? Dynamiskt tillagda kontroller måste också läggas till vid varje postback eftersom de läggs till efter att kontrollträdet har sparats.Sv:Skapa en textbox i en class
Testatde med
<code>
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
Dim objCol As New grid_col
With objCol
.Id = "234_"
.MaxLength = 255
.EditType = grid_col.Motor.Normal
.Text = "Hej"
.Text_Css = "Tjoho"
.Visible = True
.Caption = "namn"
.Caption_Css = "Tjoho_cap"
End With
objCol.MAKEPLH()
PlaceHolder1.Controls.Add(objCol._Plh) 'objCol._Plh
End Sub
</code>
men det funkar inte. Får bara nogot felmeddelande om nullref....
Mitt problem måste ligga i hur man kopierar en dynamiskt skapad placeholder i en class till en placeholder i en ascx.Sv: Skapa en textbox i en class
<code>
PlaceHolder1.Controls.Add(objCol._Plh)
</code>
Klassdeklarationer kan aldrig göras i en Event-handler (detta sker ju inom Page-klassen).Sv:Skapa en textbox i en class
Märkliga är att det fungerar även i Page_load om det inte kommer ifrån classen.
Är "OnPreRender" = "Page_PreRender" ?Sv: Skapa en textbox i en class
Hur skall man returnera en placeholder via en function ?
<code>
Public function Nisse() as placeholder
Dim Ola as new placeholder
return ola
end function
</code>
??Sv:Skapa en textbox i en class
Fungerade inte din variant?
<code>
Public function Nisse() as placeholder
Dim Ola as new placeholder
return ola
end function
</code>
Jag kodar förvisso C#, men det ser ut som att du där har en funktion som returnerar en Placeholder...?Sv:Skapa en textbox i en class