Frage

Ich folge dem Beispiel in Atlas: Erstellen einer Bestätigung die ModalPopup Extender einen Postback zu machen, wenn die OK-Taste in einem ModalPopup geklickt wird (es verwendet die ModalPopupExtender, die in ASP.NET Ajax Control Toolkit kommt), aber wie ich sehe, die Sys.WebForms.PostBackAction () ist nicht mehr in ASP.NET AJAX (das Beispiel ist für Atlas). Als ich sie das laufen „Microsoft JScript-Laufzeitfehler: Objekt erwartet“ Fehlermeldung auslöst, in der Zeile in Javascript, wo ich die PostBackAction erstellen. Wie kann ich dies in ASP.NET AJAX funktioniert, oder vielleicht, gibt es einen anderen Weg, es zu tun? Dank

War es hilfreich?

Lösung

Haben Sie sich Gedanken über die Verwendung der ConfirmButtonExtender ? Sie erhalten die modale „bling“ durch den Extender, und Sie werden die Postback-Verarbeitung, die Sie benötigen.

Sie verbinden die Schaltfläche Click-Ereignis als normal für die Verarbeitung, aber die Bestätigungs Extender „Intercept“ die Verarbeitung und erlauben Dinge fortzusetzen, wenn der Benutzer die Aktion bestätigt.

Andere Tipps

Server Side-Event mit dem ModalPopupExtender arbeiten. Was Sie tun müssen, ist eine Schaltfläche mit einem Anzeigestil auf none gesetzt zu erstellen. Dann stellen Sie die TargetControlID Eigenschaft des ModalPopupExtender zur versteckten Taste ID.

<asp:Button ID="btnShowModal" runat="server" Text="Show" OnClick="btnShowModal_Click" />
<asp:Button ID="btnHidden" runat="server" Style="display: none" />
<ajaxControlToolkit:ModalPopupExtender ID="modalExtender" runat="server" 
    TargetControlID="btnHidden" PopupControlID="divId" />

In den OnClick-Handler zeigen die modal:

modalExtender.Show();

In der Prozedur für das Steuerelement, das die modale (in der Regel eine Taste) Ausblenden der modalen schließt:

modalExtender.Hide();

Ich bin in der Lage diese Methode erfolgreich zu verwenden, um zurück an den Server, um Entsendung Kontrollen in meinem Modal mit Informationen aus einer Datenbank während des Postbacks zu füllen. Funktioniert wie ein Weltmeister.

Wenn ich die ModalPopupExtender richtig erinnere, hat es eine OKControlID, die Sie als Schaltfläche ID gesetzt.

Könnten Sie nicht nur zuweisen Ihre Taste auf „Onclick“ Clientside-Handler, der eine Postbacks nennt?

Zum Beispiel so etwas wie:

 myModalPopupExtender.OkButtonID = myOKButton.ID;
 string script = ClientScriptManager.GetPostBackEventReference(myOKButton, myOKButton.ID);

 myOKButton.Attributes.Add("onclick", script);

Bearbeiten : Es sieht aus wie eine andere mögliche Lösung hier

Sie können eine in sichtbare Schaltfläche in der Platte legen und legen Sie es als okButton. Fügen Sie Ihre tatsächliche Taste im Bedienfeld und fügen Sie seine OnClick Ereignishandler. Siehe Code unten:

<cc1:ModalPopupExtender 
TargetControlID="btnSubmit"
DropShadow="true"
OkControlID="btnOK"
CancelControlID="btnDecline"
PopupControlID="pnlTermsAndConditions"
BackgroundCssClass="popup"
ID="ModalPopupExtender1" 
runat="server">
</cc1:ModalPopupExtender>
<asp:Panel ID="pnlTermsAndConditions" runat="server">
<table width="500" cellpadding="6" cellspacing="0" border="0" bgcolor="white">
<tr>
    <td><b>Tables and Content</b></td>
</tr>
<tr>
    <td><asp:TextBox ID="TermsAndCondition" runat="server" TextMode="MultiLine" Rows="10" Columns="60">
    This is my terms and condoition
    </asp:TextBox></td>
</tr>
<tr>
    <td align="center">
    <asp:Button ID="btnAccept" runat="server" CssClass="btn" Text=" Accept " OnClick="btnAccept_Click" />&nbsp;&nbsp;
    <asp:Button ID="btnDecline" runat="server" CssClass="btn" Text=" Decline " />
    <asp:Button ID="btnOK" style="display:none;visible:false;" runat="server" CssClass="btn" Text=" OK " />
    </td>
</tr>
</table>
</asp:Panel>

Dies ist die Lösung, die ich schon immer gesucht haben. Guter Eintrag. Im übrigen ist es nicht notwendig, die Mock OK-Taste zu erstellen. Nur nicht die optionale Taste OK prameter im Modal Popup-Erweiterung Definition umfassen.

Vielleicht nur das Hinzufügen eines Server-Seite OnClick-Ereignis der Schaltfläche? Dies sollte die ganze Form Post zurück. Oder Sie könnten das Hauptformular aus html erhalten ($ finden ( ‚myFormName‘) oder etwas) und machen einen .submit () auf es.

scroll top