Domanda

Seguo l'esempio in Atlas: Creare una conferma usando ModalPopup Extender per fare un postback quando si fa clic su OkButton in ModalPopup (utilizza ModalPopupExtender incluso in ASP.NET Ajax Control Toolkit), ma come posso vedere, Sys.WebForms.PostBackAction () è non è più presente in ASP.NET AJAX (l'esempio è per Atlas). Quando lo eseguo l'errore di runtime di Microsoft JScript: oggetto previsto " genera un messaggio di errore, nella riga in javascript in cui creo PostBackAction. Come posso farlo funzionare in ASP.NET AJAX, o forse c'è un altro modo per farlo? Grazie

È stato utile?

Soluzione

Hai pensato di utilizzare ConfirmButtonExtender ? Ottieni il modale "bling" tramite l'extender e avrai l'elaborazione PostBack di cui hai bisogno.

Collega l'evento di clic del pulsante come normale per l'elaborazione, ma l'Extender di conferma intercetterà " intercetterà " l'elaborazione e consentire alle cose di continuare se l'utente conferma l'azione.

Altri suggerimenti

Gli eventi lato server funzionano con ModalPopupExtender. Quello che devi fare è creare un pulsante con uno stile di visualizzazione impostato su nessuno. Quindi impostare la proprietà TargetControlID di ModalPopupExtender sull'ID pulsante nascosto.

<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" />

Nel gestore OnClick mostra il modale:

modalExtender.Show();

Nel gestore per il controllo che chiuderà il modale (di solito un pulsante) nascondi il modale:

modalExtender.Hide();

Sono in grado di utilizzare con successo questo metodo per postare sul server al fine di popolare i controlli nel mio modale con le informazioni da un database durante il postback. Funziona come un campione.

Se ricordo correttamente ModalPopupExtender, ha un OKControlID che hai impostato come ID pulsante.

Non puoi semplicemente assegnare il tuo pulsante su " onclick " gestore clientide che chiama un postback?

Ad esempio, qualcosa del tipo:

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

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

MODIFICA : sembra un'altra potenziale soluzione qui.

È possibile posizionare un pulsante invisibile nel pannello e impostarlo come OkButton. Aggiungi il tuo pulsante effettivo nel pannello e aggiungi il relativo gestore eventi OnClick. Vedi il codice qui sotto:

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

Questa è la soluzione che stavo cercando. Ottimo post. Per inciso, non è necessario creare il finto pulsante OK. Basta non includere il preamplificatore OKbutton opzionale nella definizione dell'estensione popup modale.

Forse stai semplicemente aggiungendo un evento OnClick lato server al pulsante? Questo dovrebbe restituire l'intero modulo. Oppure potresti ottenere il modulo principale da html ($ find ('myFormName') o qualcosa del genere) e fare un .submit () su di esso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top