Le bouton ne publie pas dans la boîte de dialogue jQuery dans UC
-
05-07-2019 - |
Question
Je développe un contrôle utilisateur et il comporte un bouton asp.net dans la boîte de dialogue jQuery mais quand j'appuie sur le bouton, rien ne se passe, je veux dire qu'il n'appelle pas l'événement clic sur le serveur, j'ai essayé
.dlg.parent().appendTo(jQuery("form:first"));
mais cela ne m'a pas aidé aussi, est-il possible de réaliser cela dans asp.net UserControl? De plus, je me demande si je peux utiliser UpdatePanel dans la boîte de dialogue ou non?
La solution
Vous pouvez transformer le bouton en bouton de dialogue et placer un bouton asp.net sur la page avec l'ID de HiddenButton et l'envelopper dans un div avec un style d'affichage : none;
Le bouton n'est donc pas visible. (Ne doit pas être visible = "faux" pour que le bouton soit rendu)
Dans la boîte de dialogue javascript, ajoutez un bouton qui a pour effet de cliquer sur le bouton caché
jQuery("#dialog").dialog({
buttons: {
'ButtonText': function() {
//save the session
__doPostBack('<%# HiddenButton.ClientID %>', '')
jQuery(this).dialog('close');
}
}
});
et ajoutez un gestionnaire de clic asp au bouton caché
<div style="display:none;">
<asp:Button ID="HiddenButton" OnClick="HiddenButton_Click" ></Button>
<div>
L'événement de clic sur le serveur se déclenche lorsque l'utilisateur clique sur le bouton de la boîte de dialogue
J'espère que cela m'aide à utiliser ce modèle tout le temps
Autres conseils
Je soupçonne que cela peut être dû au fait que ASP.NET ne peut pas trouver le bouton dans le formulaire.
Utilisez la configuration d'événement .live dans jQuery - liez l'événement avant de créer la boîte de dialogue à l'aide de .live et cela devrait fonctionner ...
Événements en direct dans jQuery
Vous obtiendrez quelque chose comme ceci dans votre fonction document.ready:
$("#btn").live("click", function(){
// Do something
});
$("#dialog").dialog({
...
}
J'ai eu le même problème. J'ai fini par extraire le bouton de la boîte de dialogue, le masquer avec css, puis le déclencher à partir de l'événement de fermeture de la boîte de dialogue (je le ferai plus proprement plus tard, mais cela illustre au moins le problème).