如何在选择usercontrol时禁用ASP.NET页面中的控件?

时间:2010-12-11 14:06:41

标签: c# asp.net user-controls

我已成功创建用于显示错误消息的用户控件。现在一切正常但是当显示消息时,可以访问后台控件。如何禁用页面控件或页面单击或选择任何控件。当消息面板关闭时,它应启用页面控件。

我找到了答案的朋友。

void DisableControls(Control parent, bool status)
    {
    foreach (Control c in parent.Controls)
            {
                if (c is DropDownList)
                {
                    ((DropDownList)(c)).Enabled = status;
                }
                if (c is Button)
                {
                    ((Button)(c)).Enabled = status;
                }
                if (c is TextBox)
                {
                    ((TextBox)c).Enabled = status;
                }

                if (c is RadioButton)
                {
                    ((RadioButton)c).Enabled = status;
                }
                if (c is ImageButton)
                {
                    ((ImageButton)c).Enabled = status;
                }
                if (c is CheckBox)
                {
                    ((CheckBox)c).Enabled = status;
                }
                if (c is DropDownList)
                {
                    ((DropDownList)c).Enabled = status;
                }
                if (c is HyperLink)
                {
                    ((HyperLink)c).Enabled = status;
                }
                if (c is GridView)
                {
                    ((GridView)c).Enabled = status;
                }
                if (c is Table)
                {
                    ((Table)c).Enabled = status;
                }
                if (c is Menu)
                {
                    ((Menu)c).Enabled = status;
                }
                if (c is TreeView)
                {
                        ((TreeView)c).Enabled = status;
                    } 
}
        }

3 个答案:

答案 0 :(得分:2)

我知道,你希望它的行为就像一个模态对话框。它可以通过简单的html + javascript来完成。 您必须创建一个覆盖整个页面的透明div叠加层,因此用户不是单击控件,而是单击div。 Z-index表示其余控件的位置。

<!-- Div Overlay -->
<div id="div-overlay" style="position: absolute; height: 100%; width: 100%; z-index: 200; display: none; opacity: 0.0"></div>

<!-- Scripts to show/hide overlay -->
<script type="text/javascript">
function showOverlay() {
    var e = document.getElementById('div-overlay');
    e.style.display = 'block';
}

function hideOverlay() {
    var e = document.getElementById('div-overlay');
    e.style.display = 'none';
}
</script>

希望它有所帮助。

答案 1 :(得分:1)

你可以简单地使用div,在CSS的帮助下,你可以像模态弹出窗口那样显示div,或者只使用jquery模态弹出窗口http://jqueryui.com/demos/dialog/或asp.net ajaxcontrol toolkit http://www.asp.net/ajax/ajaxcontroltoolkit/samples/modalpopup/modalpopup.aspx < / p>

答案 2 :(得分:0)

您是否尝试创建模态对话框?如果是,您可以使用asp.net ajax中的ModalPopupExtender控件。检查此链接:

http://msdn.microsoft.com/en-us/magazine/cc164247.aspx