2016-06-22 9 views
0

Ich habe eine Unterklasse von Control. Dies ist ein ColorPicker. Ich habe die folgende Eigenschaft für sie:ASP.NET-Ereignis zum Festlegen der Eigenschaft vor OnInit ausgeführt wird

Private _Color As String 
Public Property Color As String 
    Get 
     Return _Color 
    End Get 
    Set(value As String) 
     _Color = value 
    End Set 
End Property 

Ich habe ein Page_Init Ereignis, das die Initialisierung der Steuerung enthält:

Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init 
    '... 
    If (maintType.FontColor IsNot Nothing) Then 
     colorPicker.Color = maintType.FontColor 
    End If 
    '... 
End Sub 

Und ich habe ein OnInit Ereignis für das Steuerelement:

Protected Overrides Sub OnInit(ByVal e As System.EventArgs) 
    input = New HtmlInputHidden() 
    input.Attributes.Add("class", "hidden-color-value") 
    Dim picker = New HtmlGenericControl("div") 
    picker.Attributes.Add("class", "picker-color-value") 
    picker.Style.Add("width", "220px") 
    picker.Style.Add("height", "220px") 
    Dim selectedColor = New HtmlGenericControl("div") 
    selectedColor.Style.Add("width", "100px") 
    selectedColor.Style.Add("height", "100px") 
    selectedColor.Style.Add("margin-top", "50px") 
    selectedColor.Style.Add("background-color", input.Value) 
    selectedColor.Attributes.Add("class", "selected-color") 
    input.Value = If(Color Is Nothing, "#000000", Color) 
    Me.Controls.Add(input) 
    Me.Controls.Add(picker) 
    Me.Controls.Add(selectedColor) 
    MyBase.OnInit(e) 
End Sub 

Das Problem ist, dass die Color Eigenschaft für die Initialisierung von input.Value verwendet wird, bevor die Property initialisiert wird. Ich habe versucht, Sachen in OnPreRender zu setzen, aber das verhinderte das Control von der Wiedergabe. Meine Frage bezieht sich also auf die Stelle, an der die Eingabe den Steuerelementen hinzugefügt werden soll, die Stelle, an der input.Value im Steuercode initialisiert werden soll, und die Stelle, an der die Color-Eigenschaft festgelegt werden soll.

+0

Ich habe Input-Parameter zu Controls übergeben, indem ich diese Werte in der ASPX-Seite hinzufüge; ''; Ich bin mir nicht sicher, ob du das gleiche hast !! – techspider

+0

Der Wert wird aus der Datenbank gelesen. Es gibt keine Möglichkeit, die Farbe beim Codeschreiben vorzubestimmen. –

+1

Wie wäre es mit 'Konstruktor' Ihrer' Kontrollklasse'? Ich habe etwas echte Anpassung an die Kontrolle dort drüben hinzugefügt !! – techspider

Antwort

-1

Probieren Sie die Page_Load, das würde mit Ihren Anforderungen arbeiten.

+0

Ich bezweifle das, da Page_Load auch später als Page_Init und Page_Init zu spät ausgeführt wird. –

+0

Versuchen Sie, die Farbe in die Ladung zu setzen, da dort alle Eigenschaften korrekt geladen worden wären. – MoustafaS

+0

MoustafaS, weil du mich gefragt hast, habe ich es versucht, aber es hat nicht das Ergebnis gebracht, das du erwartest. Der Grund dafür ist, dass PageInit die Zuordnung zu spät ausführt und Page_Load noch später ausgeführt wird. –