Pregunta

Sigo el ejemplo en Atlas: Creación de una confirmación utilizando ModalPopup Extender para hacer una devolución de datos cuando se hace clic en el botón OkButton en un ModalPopup (usa el ModalPopupExtender que viene en ASP.NET Ajax Control Toolkit), pero como puedo ver, el Sys.WebForms.PostBackAction () es ya no está presente en ASP.NET AJAX (el ejemplo es para Atlas). Cuando lo ejecuto, el " Error de tiempo de ejecución de Microsoft JScript: Objeto esperado " el mensaje de error aumenta, en la línea en javascript donde creo la PostBackAction. ¿Cómo puedo hacer que esto funcione en ASP.NET AJAX, o tal vez, hay otra forma de hacerlo? Gracias

¿Fue útil?

Solución

¿Ha pensado en usar el ConfirmButtonExtender ? Obtienes el modal " bling " a través del extensor, y tendrá el procesamiento PostBack que necesita.

Usted cablea el evento de clic del botón como es normal para el procesamiento, pero el extensor Confirmar " interceptará " el procesamiento y permitir que las cosas continúen si el usuario confirma la acción.

Otros consejos

Los eventos del lado del servidor funcionan con el ModalPopupExtender. Lo que debe hacer es crear un botón con un estilo de visualización establecido en ninguno. A continuación, establezca la propiedad TargetControlID de ModalPopupExtender en el ID de botón oculto.

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

En el controlador OnClick muestra el modal:

modalExtender.Show();

En el controlador para el control que cerrará el modal (generalmente un botón) oculta el modal:

modalExtender.Hide();

Soy capaz de usar este método con éxito para publicar de nuevo en el servidor para rellenar los controles en mi modal con información de una base de datos durante la devolución. Funciona como un campeón.

Si recuerdo correctamente el ModalPopupExtender, tiene un OKControlID que configuraste como tu ID de botón.

¿No podría simplemente asignar su botón a " onclick " controlador de cliente que llama una devolución de datos?

Por ejemplo, algo como:

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

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

EDITAR : Parece otra posible solución aquí.

Puede colocar un botón in-visible en el panel y configurarlo como OkButton. Agregue su botón real en el panel y agregue su controlador de eventos OnClick. Vea el código a continuación:

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

Esta es la solución que he estado buscando. Buena publicación. Por cierto, no es necesario crear el botón Aceptar simulacro. Simplemente no incluya el prefijo de botones OK en la definición de la Extensión de ventana emergente modal.

¿Tal vez solo agregue un evento OnClick del lado del servidor al botón? Esto debería publicar todo el formulario. O puede obtener el formulario principal de html ($ find ('myFormName') o algo así) y hacer un .submit () en él.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top