Чтобы изменить цвет текстового поля, используя addAttributes - PullRequest
0 голосов
/ 07 октября 2011

Я использую addAttributes, чтобы изменить цвет всех текстовых полей, присутствующих в форме, и я пишу:

If Not IsPostBack Then
   For Each CTL In Page.Controls
      if TypeOf CTL Is TextBox Then
         Dim Txt = New TextBox

         Txt.Attributes.Add("onMouseOver", "javascript:this.style.background='yellow';")
         Txt.Attributes.Add("onMouseOut", "javascript:this.style.background='white';")
      End If
   Next
End If

На странице нет ошибки, но она не работает .. Есть лиКто-нибудь, кто может помочь ??

1 Ответ

0 голосов
/ 10 октября 2011

Здесь 2 проблемы.

Во-первых, вы создаете новый TextBox каждый раз, когда вы New TextBox. После создания TextBox и установки атрибутов, вы, кажется, просто отбрасываете его, фактически не используя его. На самом деле вы должны использовать CTL напрямую, а не пытаться создать новый экземпляр Txt.

Вторая проблема заключается в том, что вы пытаетесь установить атрибуты только для прямых дочерних элементов управления страницы. Допустим, если на вашей странице есть несколько таблиц или панелей, и вы в них находитесь. Вы не сможете получить к ним доступ. Вам нужно будет рекурсивно пройти по дереву управления и установить необходимые атрибуты.

Код должен выглядеть примерно так:

Protected Sub SetTextBoxColor(ByVal parentCtl As Control)
    For Each ctl In parentCtl.Controls
        If TypeOf ctl Is TextBox Then
            ctl.Attributes.Add("onMouseOver", "javascript:this.style.background='yellow';")
            ctl.Attributes.Add("onMouseOut", "javascript:this.style.background='white';")
        End If
        SetTextBoxColor(ctl)
    Next
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        SetTextBoxColor(Page)
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...