2011-10-07 45 views
0

我使用addAttributes改變所有出現在窗體上的文本框的顏色改變文本框的顏色和我寫:要使用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

這裏有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