Enable / Disable controls
in an Asp.Net Panel
In general for Asp.Net forms we maintain different modes
like Create mode, View mode & Edit mode.
In the View mode we will disable all the controls to
make sure that the user does not, modify any of the details. To disable the
controls which are placed directly in the page, we can just iterate through the
Page.Controls collection
and Enable/Disable the controls. Refer the Post Enable / Disable all controls in an Asp.Net Page to
see how to accomplish this.
However if there are Panel controls in the page then a
mere iteration with the Page.Controls collection will not reflect the
controls which are placed inside the Panel, to Enable/Disable controls in the
Panel, we need to iterate throught the Controls in the Panel.
Here is the code to enable the controls in a Panel.
if (strMode.ToUpper() == "VIEW"))
{
EnableControls(false);
}
else if (strMode.ToUpper() == "EDIT"))
{
EnableControls(true);
}
else if (strMode.ToUpper() == "EDIT"))
{
EnableControls(true);
}
Based on the mode VIEW/EDIT we will pass false/true to the EnableControls
function, and the same will DISABLE/ENABLE controls in the Panel.
private void
EnableControls(bool ctrlStatus)
{
foreach (Control c in Page.Controls)
{
foreach (Control ctrl in c.Controls)
{
if (ctrl is Panel)
{
foreach (Control plnCtrl in ctrl.Controls)
{
if (plnCtrl is TextBox)
((TextBox)
plnCtrl).ReadOnly = (ctrlStatus == true) ? false : true;
else if (plnCtrl is Button)
((Button)
plnCtrl).Enabled = ctrlStatus;
else if (plnCtrl is RadioButtonList)
((RadioButtonList)
plnCtrl).Enabled = ctrlStatus;
else if (plnCtrl is ImageButton)
((ImageButton)
plnCtrl).Enabled = ctrlStatus;
else if (plnCtrl is CheckBox)
((CheckBox)
plnCtrl).Enabled = ctrlStatus;
else if (plnCtrl is DropDownList)
((DropDownList)
plnCtrl).Enabled = ctrlStatus;
else if (plnCtrl is HyperLink)
((HyperLink)
plnCtrl).Enabled = ctrlStatus;
else if (plnCtrl is HtmlImage)
((HtmlImage) plnCtrl).Visible = ctrlStatus;
}
}
}
}
Notice the we are setting the .Enabled property
for all other controls except the textBox control, when a TextBox is disbled
the contents in the TextBox will not be clearly visible to the users hence we
are setting the ReadOnly property for the TextBox, and this functions opposite
to the Enable/Disable
If Enable is set to true then ReadOnly should be set to false
If Enable is set to false then ReadOnly should
be set to true
To achieve this we are using a conditional operator to
reverse the value for the ReadOnly property.
((TextBox)ctrl).ReadOnly = (ctrlStatus == true) ? false : true;
That’s it we have Enabled/Disabled the controls of an
Asp.net Panel by iterating through the collection.
Related Post
Enable / Disable controls in an Asp.Net Panel
Enable / Disable nested controls in an Asp.Net User Control
Enable / Disable nested controls in an Asp.Net User Control

