2016-06-22 12 views
0

У меня есть подкласс Control. Это ColorPicker. У меня есть следующее свойство для него:Событие asp.net для установки свойства до выполнения OnInit

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

У меня есть Page_Init событие, которое содержит инициализацию управления:

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 

И у меня есть событие OnInit для управления:

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 

Проблема заключается в том, что свойство Color используется для инициализации input.Value до инициализации Property. Я попытался поместить вещи в OnPreRender, но это предотвратило рендеринг Control. Итак, мой вопрос касается того места, где вход должен быть добавлен в элементы управления, место, где input.Value должно быть инициализировано в коде управления и в том месте, где должно быть установлено свойство Color.

+0

Я использовал для ввода параметров ввода для элементов управления, добавив эти значения на странице ASPX; ''; Я не уверен, что у вас есть то же самое! – techspider

+0

Значение считывается из базы данных. Невозможно предопределить цвет при написании кода. –

+1

Как насчет 'Конструктор' вашего' Control Class'? Я добавил некоторые реальные настройки для контроля! – techspider

ответ

-1

Попробуйте Page_Load, это будет работать с вашими требованиями.

+0

Я сомневаюсь, что, поскольку Page_Load будет выполнен даже позже, чем Page_Init, а Page_Init тоже слишком поздно. –

+0

Попробуйте установить цвет в нагрузку, все свойства были бы загружены правильно. – MoustafaS

+0

MoustafaS, потому что вы спросили меня, я попробовал, но это не дало ожидаемого результата. Причиной этого является то, что Page_Init выполняет задание слишком поздно, а Page_Load выполняется еще позже. –

 Смежные вопросы

  • Нет связанных вопросов^_^