Enable / Disable
all controls in an Asp.Net Page
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. If the form is
small then we can manually set the .Enabled property to false for all
the controls in the form to achieve the effect, however if we have a huge form
with hundreds of controls then this becomes a tedious task to set the property
for each of the controls, in these scenarios we can make use of the Page.Controls
collection to loop throught all the controls in the page and Enable/Disable
the controls.
Here is the code to enable all the controls in an
Asp.net page.
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 page.
private void
EnableControls(bool ctrlStatus)
{
foreach (Control c in Page.Controls)
{
foreach (Control ctrl in c.Controls)
{
foreach (Control c in Page.Controls)
{
foreach (Control ctrl in c.Controls)
{
if
(ctrl is TextBox)
((TextBox)ctrl).ReadOnly
= (ctrlStatus == true) ? false : true;
else
if (ctrl is Button)
((Button)ctrl).Enabled
= ctrlStatus;
else if (ctrl is RadioButtonList)
((RadioButtonList)ctrl).Enabled
= ctrlStatus;
else
if (ctrl is ImageButton)
((ImageButton)ctrl).Enabled
= ctrlStatus;
else
if (ctrl is CheckBox)
((CheckBox)ctrl).Enabled
= ctrlStatus;
else
if (ctrl is DropDownList)
((DropDownList)ctrl).Enabled
= ctrlStatus;
else
if (ctrl is HyperLink)
((HyperLink)ctrl).Enabled
= ctrlStatus;
else
if (ctrl is HtmlImage)
((HtmlImage)ctrl).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
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;
This logic will work fine for the controls which are
placed directly in the form, if the form has a Panel, we need to add another
iteration, which will iterate through the controls in the Panel to
Enable/Disable the panel controls. Refer to the Post Enable / Disable controls in an Asp.Net Panel, to see how to achieve this.
That’s it we have Enabled/Disabled the controls of an
Asp.net page by iterating through the Page.Controls collection.
Related Post
No comments:
Post a Comment