我正在使用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
页面上没有错误,但它不起作用..有没有人可以提供帮助?
答案 0 :(得分:0)
这里有两个问题。
首先,每次New TextBox
创建一个新的TextBox。在创建TextBox并设置属性之后,您似乎只是丢弃它而不实际使用它。您实际上应该直接使用CTL
而不是尝试创建新实例Txt
。
第二个问题是,您只是尝试为页面的直接子控件设置属性。假设您的页面有一些表格或面板,而TextBox就在那些页面或面板中。你将无法访问它们。您需要递归遍历控制树并根据需要设置属性。
代码看起来像这样:
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