Le passage des données dans un ModalPopupExtender
J'ai un ModalPopupExtender qui permet à un client de demander les informations de paiement. Il a été génial de travailler. Ensuite, le client a demandé à voir le montant total dû sur la ModalPopup. Ce ne pas sembler une grosse affaire à il suffit de prendre le montant total dû par le parent de contrôle et la passer dans la ModalPopup de contrôle. Il semble qu'il n'y a pas de moyen facile de faire cela.
Voici mon code HTML, gardez à l'esprit ce code est encapsulé dans un UpdatePanel
<asp:LinkButton ID="lnkMakePayment" runat="server" Visible="true" OnClick="lnkMakePayment_Click" >
<asp:Label ID="lblMakePayment" runat="server" Text="Make Payment"/></asp:LinkButton>
<asp:Button ID="btnDummy" style="display: none;" runat="server"
OnClick="btnDummy_Click" />
<ajaxToolkit:ModalPopupExtender ID="mdlPopupPayment" runat="server"
TargetControlID="btnDummy" PopupControlID="pnlMakePayment"
CancelControlID="popUpCancel" DropShadow="true" BackgroundCssClass="modalBackground">
</ajaxToolkit:ModalPopupExtender>
<asp:Panel ID="pnlMakePayment" runat="server" Style="display: none;"
SkinID="PopUpPanel" class="ContentBoxColor" Width="400px" Height="170px">
<MP1:MakePaymentPopup ID="MakePayment" runat="server" />
<div style="text-align: right; width: 100%; margin-top: 5px;">
<asp:Button ID="popUpCancel" runat="server" Text="Cancel" Width="0px" />
</div>
</asp:Panel>
Voici maintenant le code-behind
protected void btnDummy_Click(object sender, EventArgs e) { }
protected void lnkMakePayment_Click(object sender, EventArgs e)
{
mdlPopupPayment.Show();
}
Ainsi, lorsque l'utilisateur clique sur le paiement lien de la ModalPopup fonctionne très bien. Et en plus il déclenche un événement que le contrôle parent écoute pour appliquer les informations de paiement et toutes les informations de paiement que l'utilisateur remplit dans la fenêtre contextuelle. De nouveau, tout cela fonctionne très bien.
Ma première tentative à l'envoi du total en raison de la ModalPopup est comme suit:
protected void lnkMakePayment_Click(object sender, EventArgs e)
{
//MakePayment is the actual ModalPopup control and total due is a public property
MakePayment.TotalDue = txtTotalDue.Text
mdlPopupPayment.Show();
}
Le problème c'est que quand je clique sur le lien pour afficher le ModalPopup la PageLoad événement ne se déclenche pas, donc je n'ai aucun moyen de faire de mon bien à un label à l'intérieur de la ModalPopup.
J'ai même essayé d'utiliser l'objet de session, mais a eu le même problème.
Je ne peux même pas faire un voyage à la base de données car je ne peux pas passer l'ID de client.
Des idées?
Je suis un novice en Javascript et perfer un côté serveur soultion mais à ce point, je suis prête à tout essayer.
La MakePayment de contrôle de l'utilisateur contient 3 aep des zones de texte. L'un pour l'utilisateur de saisir un montant du paiement, un autre pour le type de paiement, et un troisième pour les notes comme les numéros de chèque. Aussi sur le contrôle il y a un appliquer et bouton annuler. Le contrôle parental est une base ascx page qui est un écran de saisie de données qui contient les ModalPopupExtender et tout le code html pour l'activer.
Vous devez vous connecter pour publier un commentaire.
Il n'est pas nécessaire de créer un contrôle utilisateur pour transmettre des données dans un modal popup. Je tiens seulement à créer un contrôle utilisateur si j'avais besoin de le réutiliser dans différents endroits. Si vous n'avez pas besoin de le réutiliser dans plusieurs endroits, alors vous n'avez pas besoin d'un contrôle de l'utilisateur. Au lieu de faire ceci:
Supposons que vous avez besoin d'un popup qui affiche une chaîne de caractères et a des boutons OK et Annuler, mais vous devez définir la valeur de la chaîne avant qu'il sorte.
Placer une Étiquette, les boutons Ok et Annuler l'intérieur de l'UpdatePanel, sous le popup extender. Ceci est illustré ci-dessous:
Ensuite, sur votre page, placez un Bouton et une zone de texte comme ceci:
Maintenant, dans le code de votre page, placez le gestionnaire de
MyButton
:Je pense que vous avez besoin de fournir un peu plus d'informations. Pouvez-vous nous montrer ou de décrire le balisage/code-behind contenues dans votre MakePayment de contrôle de l'utilisateur? Et quand vous parlez de "contrôle parental" de l'élément dont vous parlez? MakePayment, pnlMakePayment, pnlDummy?
Une fois que j'ai réalisé ce que je faisais de mal à la solution je suis venu avec était assez simple.
Je me dois de remercier Arnold Matusz car c'était son entrée de blog qui m'a montré la lumière.
http://blog.dreamlabsolutions.com/post/2009/01/10/ModalPopupExtender-to-show-a-MessageBox.aspx
Au lieu d'avoir le ModalPopup entender appel d'un contrôle utilisateur seulement affiche le code html. J'ai fait un contrôle utilisateur qui a été le ModalPopupExtender. De cette façon, je peux appeler et de passer d'une partie des données.
Mon MakePayment de contrôle de l'utilisateur du HTML ressemble à
Et dans le code-behind, j'ai une méthode publique
Sur mon formulaire principal, j'ai un lien appelé à Effectuer le Paiement
Lorsque le Paiement lien est cliqué, le code derrière appelle la MakePayment contrôle de passage dans toutes les données que je souhaite afficher.
DE CODE C#