2010-12-11 2 views
5

I Erfolgreich erstellt ein Benutzersteuerelement zum Anzeigen von Fehlermeldung. Jetzt funktioniert alles gut, aber wenn die Nachricht angezeigt wird, kann auf die Hintergrundsteuerelemente zugegriffen werden. wie Sie die Seitensteuerelemente oder die Seite durch Anklicken oder Auswählen von Steuerelementen deaktivieren. Wenn das Meldungsfenster geschlossen wird, sollten die Seitensteuerelemente aktiviert werden.Wie Sie die Steuerelemente in einer ASP.NET-Seite deaktivieren, wenn das Benutzersteuerelement ausgewählt ist?

Ich fand die Antwort Freunde.

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

Wenn das Benutzersteuerelement aktiviert ist, habe ich das div, in dem ich die Steuerelemente hinzugefügt habe. Aber die Steuerelemente in der Seite, von der ich angerufen habe, ist auch aktiv. Ich möchte die Steuerelemente auf dieser Seite deaktivieren. –

+0

Ich denke, Sie werden feststellen, dass Sie Ihren Code * sehr * vereinfachen können, indem Sie einfach Folgendes verwenden: 'foreach (Control c in parent.Controls) {c.Enabled = false; } 'da Enabled eine Eigenschaft von' Control' ist. – Crisfole

+0

danke für die Antwort. Ich habe das schon versucht, kann es aber nicht erfolgreich machen. es wirft einen Fehler auf. –

Antwort

2

ich sehe, wollen Sie es wie ein modaler Dialog verhalten. Es kann über einfaches HTML + Javascript getan werden. Sie müssen ein transparentes Div-Overlay erstellen, das über die gesamte Seite geht, damit der Benutzer nicht auf die Steuerelemente klickt, sondern auf das div klickt. Z-Index gibt die Position über den Rest der Kontrollen an.

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

Hoffe es hilft.

1

können Sie verwenden einfach ein div und mit Hilfe von CSS, können Sie in der Lage, dass die div wie ein modalen Popup angezeigt werden oder einfach verwenden jQuery modalen Popup http://jqueryui.com/demos/dialog/ oder asp.net ajaxcontrol Toolkit http://www.asp.net/ajax/ajaxcontroltoolkit/samples/modalpopup/modalpopup.aspx

+0

nein ich möchte nicht ajax in diesem verwenden, weil ich einige Probleme wie Seitenflimmern und etc. –

+0

Verwenden Sie JQuery, wenn Sie oder einfach einfach verwenden Sie CSS, um wie ein modales Popup anzeigen und dann alle anderen Steuerelemente nicht zugänglich –

+0

Können Sie mir ein Beispiel geben –

0

Sind Sie versuchen, einen modalen Dialog zu erstellen? Wenn ja, können Sie das ModalPopupExtender Control von asp.net ajax verwenden. überprüfen Sie diesen Link:

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

+0

nein benutze keine ajax darin –

+0

Haben Sie versucht, dieses Steuerelement zu verwenden? Ich glaube nicht, dass Sie irgendwelche Probleme wie Seitenflimmern bekommen werden. – sid

+0

Wenn die Seite neu geladen oder aktualisiert wird, erscheint das Popup-Fenster für einige Millisekunden –

Verwandte Themen