Faça postback quando o botão OK em um ModalPopup é clicado em ASP.NET AJAX
-
03-07-2019 - |
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
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" />
<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.