Здесь 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