Question

Je suis l'exemple de Atlas: création d'une confirmation à l'aide de ModalPopup Extender pour créer une publication lorsque l'utilisateur clique sur OkButton dans un ModalPopup (il utilise ModalPopupExtender fourni avec ASP.NET Ajax Control Toolkit), mais comme je peux le voir, Sys.WebForms.PostBackAction () est n'est plus présent dans ASP.NET AJAX (l'exemple concerne Atlas). Lorsque je l'exécute, l'erreur d'exécution "Microsoft JScript: objet attendu". message d'erreur déclenche, dans la ligne en javascript où je crée le PostBackAction. Comment puis-je faire en sorte que cela fonctionne dans ASP.NET AJAX, ou peut-être qu'il existe un autre moyen de le faire? Merci

Était-ce utile?

La solution

Avez-vous pensé à utiliser le ConfirmButtonExtender ? Vous obtenez le modal "bling" via l'extension, et vous obtiendrez le traitement PostBack dont vous avez besoin.

Vous câblez l'événement de clic du bouton comme d'habitude pour le traitement, mais le prolongateur confirmera "intercepter". le traitement et permettre aux choses de continuer si l'utilisateur confirme l'action.

Autres conseils

Les événements côté serveur fonctionnent avec ModalPopupExtender. Ce que vous devez faire est de créer un bouton avec un style d'affichage défini sur aucun. Définissez ensuite la propriété TargetControlID de ModalPopupExtender sur l'ID de bouton masqué.

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

Dans le gestionnaire OnClick, affichez le modal:

modalExtender.Show();

Dans le gestionnaire du contrôle qui ferme le modal (généralement un bouton), masquez le modal:

modalExtender.Hide();

Je peux utiliser cette méthode avec succès pour la publication sur le serveur afin de renseigner les contrôles de mon modal avec les informations d'une base de données au cours de la publication. Fonctionne comme un champion.

Si je me souviens bien de ModalPopupExtender, il possède un OKControlID que vous avez défini comme identifiant de bouton.

Ne pouvez-vous pas simplement assigner votre bouton à "onclick"? gestionnaire côté client qui appelle une publication?

Par exemple, quelque chose comme:

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

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

MODIFIER : cela ressemble à une autre solution potentielle ici.

Vous pouvez placer un bouton invisible dans le panneau et le définir comme OkButton. Ajoutez votre bouton dans le panneau et ajoutez son gestionnaire d’événements OnClick. Voir le code ci-dessous:

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

C’est la solution que je cherchais. Super article. Incidemment, il n'est pas nécessaire de créer le bouton OK OK. N'incluez tout simplement pas le paramètre facultatif OKbutton dans la définition d'extension de fenêtre contextuelle modale.

Peut-être simplement ajouter un événement OnClick côté serveur au bouton? Cela devrait poster le formulaire en entier. Vous pouvez également obtenir le formulaire principal à partir de HTML ($ find ('myFormName') ou quelque chose de ce genre) et faire un .submit () dessus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top