2010-12-11 49 views
5

I Création réussie d'un contrôle utilisateur pour l'affichage du message d'erreur. maintenant tout fonctionne bien, mais lorsque le message est affiché, les contrôles en arrière-plan peuvent être consultés. comment désactiver les contrôles de page ou la page en cliquant ou en sélectionnant des contrôles. et quand le panneau de message est fermé, il devrait activer les contrôles de page.Comment désactiver les contrôles dans une page ASP.NET lorsque la commande usercontrol est sélectionnée?

J'ai trouvé la réponse des amis.

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

lorsque le contrôle utilisateur est activé, j'ai obtenu le div dans lequel j'ai ajouté les contrôles. Mais les contrôles dans la page d'où j'ai appelé est également actif. Je veux désactiver les contrôles dans cette page. –

+0

Je pense que vous trouverez que vous pouvez simplifier votre code * grandement * en utilisant simplement ce qui suit: 'foreach (Contrôle c dans parent.Controls) {c.Enabled = false; } 'car Enabled est une propriété de' Control'. – Crisfole

+0

merci pour la réponse. J'ai déjà essayé mais je ne peux pas le faire avec succès. il jette une erreur. –

Répondre

2

Je vois, vous voulez qu'il se comporte comme une boîte de dialogue modale. Cela peut être fait via un simple html + javascript. Vous devez créer une superposition div transparente qui va sur toute la page, de sorte que l'utilisateur au lieu de cliquer sur les contrôles, il serait en cliquant sur la div. Z-index indique la position sur le reste des contrôles.

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

Espérons que cela aide.

1

Vous pouvez utiliser simplement div et avec l'aide de CSS, vous pouvez capable d'afficher que div comme un popup modal ou simplement utiliser jquery modal Popup http://jqueryui.com/demos/dialog/ ou asp.net boîte à outils ajaxcontrol http://www.asp.net/ajax/ajaxcontroltoolkit/samples/modalpopup/modalpopup.aspx

+0

non je ne veux pas utiliser ajax parce que j'ai des problèmes comme scintillement de page et etc. –

+0

Utilisez JQuery si vous pouvez ou simplement utiliser CSS pour afficher comme une fenêtre modale et tous les autres contrôles ne seront pas accessibles –

+0

pouvez-vous me donner un exemple –

0

Est-ce vous essayez de créer un dialogue modal? Si oui, vous pouvez utiliser le contrôle ModalPopupExtender depuis asp.net ajax. vérifier ce lien:

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

+0

je n'utilise pas d'ajax –

+0

Avez-vous essayé d'utiliser ce contrôle? Je ne pense pas que vous aurez des problèmes comme le scintillement de la page. – sid

+0

Lorsque la page recharge ou actualise la fenêtre du modèle vient juste et va pendant quelques secondes milli –