2011-10-24 6 views
1

D'abord, je vais vous décrire la forme de web mise en page:ASP.Net AJAX fenêtre modale

Le formulaire contient un GridView1 avec un bouton « Détails » qui ouvre une seconde GridView2, dont le but est bien sûr de montrer les détails de l'élément sélectionné à partir du parent GridView1. Tous les contrôles sont rendus dynamiquement dans le codebehind côté serveur.

Le défi:

Je dois créer une modale fenêtre pop-up qui est présenté lorsque l'utilisateur clique sur une icône qui est dans l'enfant GridView2 comme un contrôle d'image dans un TemplateField. Ceci permet aux utilisateurs d'ajouter des commentaires aux détails de l'enfant GridView2.

Mon approche:

J'essaie d'obtenir l'extension popup modale de ajaxToolkit (ID = "de mpe") câblé à l'icône dans la TemplateField pendant la phase PreRender. Puisque le TargetControlID ne peut pas être nul ou vide, ce que je fais est de créer un contrôle Button factice et de définir la propriété TargetControlID de l'extension popup modale à l'ID du bouton factice appelé, puis après avoir ajouté le TemplateField à GridView2, j'ai défini la propriété TargetControlID sur l'ID de l'icône, qui est "icon_addComment".

Le problème:

Lorsque je tente de définir la propriété TargetControlID à l'ID de l'icône, le code lance l'erreur "Le TargetControlID de « mpe » est pas valide Un contrôle avec « icon_addComment » ID. n'a pas pu être trouvé ". Je suis perplexe sur la façon dont je peux obtenir cela pour fonctionner correctement, il semble qu'il n'y a aucun moyen de contourner la condition que le contrôle cible doit être créé avant l'extension contextuelle contextuelle. Ce que je voudrais, c'est que l'ID de l'icône GridView2 soit l'identificateur TargetControlID de l'extenseur modal

Répondre

1

Utilisez un bouton caché comme identificateur de contrôle cible dans l'extension contextuelle modale, puis utilisez java-script pour afficher/masquer le pop-up modal sur l'icône actuelle. Par exemple,

<asp:ModalPopupExtender runat="server" ID="MyPopup" ... /> 

<script type="text/javascript" /> 

function showPopup() { 
    $find('<%= MyPopup.ClientID ').show(); 
} 

function hidePopup() { 
    $find('<%= MyPopup.ClientID ').hide(); 
} 

</script> 

Personnellement, je ne suis pas un fan d'ajax control toolkit. Pour cette exigence, j'aurais utilisé jquery UI Dialog.

Questions connexes