Retrieving Page Controls Programmatically

There might be situations where you want to retrieve controls that are present in a web page and process them. In that case this article can be very use. Basically a web page is a container for all controls and for retrieving all controls we need to traverse the control tree. So for this this program can be used to disable all form controls at runtime

Partial Class _Default
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
disableControls(Me.Page)

End Sub
Public Sub
disableControls(ByVal controltree As Control)
For Each tempcontrol As Control In controltree.Controls
If TypeOf tempcontrol Is TextBox Then
CType
(tempcontrol, TextBox).Enabled = False
Continue For
ElseIf TypeOf
tempcontrol Is Label Then
CType
(tempcontrol, Label).Enabled = False
Continue For
ElseIf TypeOf
tempcontrol Is Button Then
CType
(tempcontrol, Button).Enabled = False
Continue For
ElseIf
tempcontrol.Controls.Count > 0 Then
disableControls(tempcontrol)
End If
Next
End Sub

Before using this code there are some performance issues

  • If you are calling this function from different pages and then storing the state of page is very useful for example if you already disabled all the controls then there is no need to pass the page control to this method This can be easily done with storing the page state in session variable.

End Class