2011-05-11 76 views
2

正如標題所示。我有禁用runat = server的所有控件的代碼。它如下禁用vb.net中Master頁面的內容頁面的href

Dim c As Control 
For Each c In pc 
    If c.HasControls Then DisableAllControls(c.Controls) 

    If c.GetType.ToString.ToLower.IndexOf("webcontrols.dropdownlist") > -1 Then 
     DirectCast(c, DropDownList).Enabled = False 
    ElseIf c.GetType.ToString.ToLower.IndexOf("webcontrols.textbox") > -1 Then 
     DirectCast(c, TextBox).Enabled = False 
    ElseIf c.GetType.ToString.ToLower.IndexOf("webcontrols.radiobuttonlist") > -1 Then 
     DirectCast(c, RadioButtonList).Enabled = False 
    ElseIf c.GetType.ToString.ToLower.IndexOf("webcontrols.radiobutton") > -1 Then 
     DirectCast(c, RadioButton).Enabled = False 
    ElseIf c.GetType.ToString.ToLower.IndexOf("webcontrols.button") > -1 Then 
     DirectCast(c, Button).Enabled = False 
    End If 
Next 

但我有幾個href在那裏,我想也禁用。我知道他們不會跑服務器,所以我怎麼能抓住這些?

+0

抱歉無法格式化。我不知道如何在這裏格式化代碼。 – pollko 2011-05-11 00:36:57

+0

有了這個,我必須得到我身邊的每個href的名稱並禁用它。沒有意義。如果你讀我的代碼,我禁用所有按鈕,ddl的txtboxes。我需要爲標籤做同樣的事情 – 2011-05-11 17:59:40

回答

0

您也可以將runat =「server」添加到HTML控件中。沒有它,你將無法訪問服務器端的控件,你將無法禁用它。

0

該代碼看起來無效(If c.HasControls Then DisableAllControls(c.Controls)沒有匹配的End If),但也許VB.NET已添加內聯If語法就像沒有我意識到。

不管怎樣,只要禁用所有runat="server"控制,你應該能夠只是這樣做:

For Each c as WebControl In pc.OfType(Of WebControl)() 
    ' Put your recursive call here as before 
    c.Enabled = False 
Next 

現在,爲「禁用」的其他元素,你可以添加runat="server"他們(也許不是如果你已經生成了HTML,甚至可能),或者你可以使用一些JavaScript。我要通過禁用來假設你的意思是隱藏在<a>標記的情況下?

jQuery讓這個簡單,用示例腳本是這樣的:

$(document).load(function() { 
    $('a').hide(); 
}); 

或:

/* hides all a tags under an element with class="someClass" */ 
$(document).load(function() { 
    $('.someClass a').hide(); 
}); 

然後你可以有你的代碼使這個腳本,使用這樣的事情在你的頁面:

Dim script as String = "" /* your javascript here */ 
Me.ClientScript.RegisterClientScriptBlock(Me.GetType(), "HideTagsScript", script)