如何确定页面上是否启用了控件?

时间:2009-06-17 16:53:05

标签: asp.net

我在aspx页面的Panel中有一个TextBox。

如果未启用textBox,我需要禁用RequiredFieldValidator。

如果Panel被禁用,TextBox.Enabled为True,则页面上的文本框被禁用(没问题。)

那么,如果启用属性不可靠,如何在页面上禁用TextBox?

请注意,我需要一个通用解决方案,因为可能有许多嵌套级别的容器,并且容器并不总是Panel。

2 个答案:

答案 0 :(得分:4)

您可以跨控件层次结构进行递归搜索,如果启用了控件,则控件为Enabled,并且所有祖先也都已启用。

bool IsControlEnabled (WebControl control)
{
    if (!(control.Parent is WebControl)) 
        return control.Enabled;

    return control.Enabled && 
        IsControlEnabled(control.Parent as WebControl);
}

答案 1 :(得分:1)

您如何禁用容器控件?您是否有理由在禁用其容器时无法禁用TextboxRequiredFieldValidator控件?