2009-07-03 8 views
1

Ich verwende einen Ajax ModalPopupExtender auf vielen Seiten, um Bestätigungsdialog anzuzeigen.Platzieren von Ajax ModalPopupExtender in Benutzersteuerelement

Also möchte ich den gleichen Code auf allen Seiten wiederverwenden, indem Sie es in ein Verwendungssteuerelement platzieren. Aber ich bin mir nicht sicher, ob es möglich ist, von einem Javascript auf dieses Benutzersteuerelement zuzugreifen (ich möchte keine serverseitigen Operationen).

Dies ist der Code, der für Popup-Anzeige verantwortlich ist, dass ich innerhalb Benutzerkontrolle platzieren möchten:

<script language="javascript" type="text/javascript"> 
    var _source; 
    var _popup; 
    var _btn; 
    var _div; 

    function showConfirm(source, btnID, theDiv) { 

     this._source = source; 
     this._btn = btnID; 
     this._div = theDiv; 

     document.getElementById(btnID).click(); 
     document.getElementById(theDiv).style.visibility = 'visible'; 
    } 

     function okClick() { 

      document.getElementById(_div).style.visibility = 'hidden'; 
      __doPostBack(this._source.name, ''); 
     } 

     function cancelClick() { 
      document.getElementById(_div).style.visibility = 'hidden'; 
      this._source = null; 
     } 
    </script> 


<cc1:ModalPopupExtender ID="modal" runat="server" 
     TargetControlID="theButton" PopupControlID="div" 
     OkControlID="btnOk" OnOkScript="okClick();" CancelControlID="btnNo" 
     OnCancelScript="cancelClick();" BackgroundCssClass="modalBackground" /> 

<div id="div" runat="server" align="center" class="confirm" style="display: none"> 
    <img align="absmiddle" src="../images/warning.jpg" />Are you sure you want to delete this item? 
    </br> 
    <asp:Button ID="btnOk" runat="server" Text="Yes" Width="50px" /> 
    <asp:Button ID="btnNo" runat="server" Text="No" Width="50px" /> 
</div> 

Und auf der „Hosting“ Seite möchte ich JS zu einem Tasten zuweisen, die ausgelöst wird das Popup: Dies ist der Code, den ich jetzt habe (und sollte dem Benutzer die Kontrolle übernommen werden):

string s = string.Format("showConfirm(this,'{0}','{1}');return false;", theButton.ClientID, div.ClientID);    
btn.OnClientClick = s; 

Antwort

1

Es ist möglich, den modalen Popup-Extender von Javascript zu nennen wie die modale Popup-Steuerelement nur ein weiteres DOM-Element ist . Alles, was Sie wissen müssen, ist ein Selektor, der den Artikel auswählen kann.

Um Ihren modalen Popup-Extender von Javascript zu "zeigen", müssen Sie nur ein Skript zu Ihrer Master-Seite, Benutzersteuerung oder Seite hinzufügen, die das dom-Element anzeigt, das der modale Popup-Extender ist.

Alternativ können Sie ein JavaScript-Framework verwenden, das viele andere modale Dialoge enthält, die gleichermaßen (wenn nicht mehr) nützlicher sind als der modale Ajax-Popup-Extender. Dies ist wahrscheinlich relevanter für das, was Sie zu erreichen versuchen, wenn Sie die serverseitigen Code-Funktionen von ASP.NET nicht verwenden möchten.

+0

Was meinen Sie mit "Selektor, der den Artikel auswählen kann."? Welche andere Javascript modale Dialoge kann ich verwenden (neben confirm())? Danke. – markiz

+0

Vielleicht habe ich mich selbst nicht klar gemacht, aber der popupextender befindet sich in usercontrol. – markiz

Verwandte Themen