Pergunta

Eu sigo o exemplo na Atlas: Criação de uma confirmação Usando o ModalPopup Extender para fazer um postback quando o botão OK em um ModalPopup é clicado (ele usa o ModalPopupExtender que vem em ASP.NET Ajax Control Toolkit), mas como eu posso ver, o Sys.WebForms.PostBackAction () é não está mais presente no ASP.NET AJAX (o exemplo é para Atlas). Quando eu executá-lo o "erro de execução Microsoft JScript: objeto esperado" levanta mensagem de erro, na linha em javascript onde eu criar o PostBackAction. Como posso fazer isso funciona em ASP.NET AJAX, ou talvez, não há outra maneira de fazê-lo? Graças

Foi útil?

Solução

Você já pensou sobre como usar o ConfirmButtonExtender ? Você começa o modal "bling" através do extensor, e você terá a postagem de processamento que você precisa.

Você conectar o evento clique de botão como normal para o processamento, mas o Confirmar extensor irá "interceptar" o processamento e permitir que as coisas continuam se os usuário confirma a ação.

Outras dicas

eventos do lado do servidor fazer o trabalho com o ModalPopupExtender. O que você precisa fazer é criar um botão com um conjunto estilo de exibição para nenhum. Em seguida, defina a propriedade TargetControlID do ModalPopupExtender ao ID botão escondido.

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

No OnClick manipulador de mostrar o modal:

modalExtender.Show();

No manipulador para o controle que irá fechar o modal (geralmente um botão) esconder o modal:

modalExtender.Hide();

Eu sou capaz de usar este método para postagem de volta para o servidor, a fim de controles Preencher na minha modal com informações de um banco de dados durante a postagem. Funciona como um campeão.

Se eu me lembro do ModalPopupExtender corretamente, tem uma OKControlID que definiu como seu ID botão.

Você poderia não apenas atribuir o botão "onclick" manipulador clientside que chama um postback?

Por exemplo, algo como:

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

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

Editar : Parece que outra solução potencial aqui

Você pode colocar um botão in-visível no painel e defini-lo como OKButton. Adicionar o botão real no painel e adicionar seu manipulador de eventos OnClick. Ver código abaixo:

<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 é a solução que eu estava procurando. Ótimo post. Aliás, não é neccessary para criar o botão OK simulada. Só não incluir o opcional botão OK prameter na definição Modal Popup de extensão.

Talvez apenas adicionando um OnClick evento do lado do servidor para o botão? Isto deve enviar de volta todo o formulário. Ou você pode obter o formulário principal de html ($ find ( 'myFormName') ou algo assim) e fazer um .submit () sobre ele.

scroll top