2010-12-11 17 views
5

I Creó correctamente un control de usuario para mostrar el mensaje de error. ahora todo funciona bien, pero cuando se muestra el mensaje, se puede acceder a los controles de fondo. cómo deshabilitar los controles de página o la página al hacer clic o seleccionar cualquier control. y cuando el panel de mensajes está cerrado, debe habilitar los controles de página.¿Cómo deshabilitar los controles en una página ASP.NET cuando se selecciona usercontrol?

encontré la respuesta amigos.

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; 
        } 
} 
     } 
+0

cuando el control de usuario está activado, recibí el div en el que he agregado los controles. Pero los controles en la página desde la que llamé también están activos. quiero deshabilitar los controles en esa página. –

+0

Creo que encontrará que puede simplificar su código * enormemente * simplemente usando lo siguiente: 'foreach (Control c en parent.Controls) {c.Enabled = false; } 'porque Enabled es una propiedad de' Control'. – Crisfole

+0

gracias por la respuesta. Ya lo intenté pero no puedo hacerlo con éxito. arroja un error. –

Respuesta

2

veo, desea que se comporte como un cuadro de diálogo modal. Se puede hacer a través de html + javascript. Debe crear una superposición div transparente que recorra toda la página, de modo que el usuario en lugar de hacer clic en los controles esté haciendo clic en el div. El índice Z indica la posición sobre el resto de los controles.

<!-- 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> 

Espero que ayude.

1

Puede usar simplemente un div y con la ayuda de CSS, puede capaz de mostrar que div como un emergente modal o simplemente utilizar jQuery modal Emergente de http://jqueryui.com/demos/dialog/ o ajaxcontrol asp.net conjunto de herramientas http://www.asp.net/ajax/ajaxcontroltoolkit/samples/modalpopup/modalpopup.aspx

+0

no, no quiero usar ajax en esto porque tengo algunos problemas como parpadeo de página, etc. –

+0

Use JQuery si puede o simplemente use CSS para mostrar como una ventana emergente modal y luego no se podrá acceder a todos los demás controles –

+0

¿Puede darme un ejemplo –

0

Son Estás tratando de crear un diálogo modal? En caso afirmativo, puede usar ModalPopupExtender Control desde asp.net ajax. comprobar este enlace:

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

+0

no estoy usando ajax –

+0

¿Intentó usar este control? No creo que tenga problemas como el parpadeo de la página. – sid

+0

Cuando la página vuelve a cargar o actualiza, la ventana emergente modelo aparece y desaparece durante unos mili segundos –

Cuestiones relacionadas