2010-12-04 14 views
1

Je travaille avec Ajax ModalPopupExtender à l'intérieur d'un répéteur, mais il ne s'affiche pas à cause d'une erreur javascript et d'autres choses. Quelqu'un pourrait-il donner un exemple de comment faire cela?Ajax Modal Popup Extender avec répéteur

Répondre

4

La façon dont je l'ai fait:

  1. Placez le ModalPopupExtender extérieur (après) du contrôle de répéteur.
  2. Ajoutez un bouton qui servira de cible «fausse» pour le ModalPopupExtender, placez-le à l'extérieur (après) du répéteur. Utilisez l'affichage 'Style = ": none"' pour masquer le bouton de l'utilisateur. Aucun événement OnClick ne doit être lié à ce bouton.
  3. Placez le panneau cible de ModalPopupExtender à l'extérieur du répéteur.
  4. Dans le modèle d'élément du répéteur ajouter un linkbutton avec onclick, en utilisant la linkbutton vous permet d'utiliser le CommandArgument, qui peut être lié à un DataBinder - dire pour un enregistrement ID
  5. Dans le codebehind créer un sous qui gère la événement onclick pour le linkbutton dans le répéteur. Si nécessaire, faites un directCast de l'objet expéditeur à un lien de lien afin que vous ayez accès au commandArgument.
  6. alimenter le panneau cible de ModalPopupExtender appropriée
  7. Faites un ModalPopupExtender.show()

HTML

<ul id="Repeater"> 
<asp:Repeater ID="rptMain" runat="server"> 
    <HeaderTemplate> 
    <span class="RepeaterHeader"> 
     <li> 
     Edit 
     </li> 
    </span> 
    <div class="clear"></div> 
    </HeaderTemplate> 
    <ItemTemplate> 
    <li class="RptLeadItemEdit"> 
     <asp:LinkButton ID="btEdit" runat="server" Text="Edit" 
      CommandArgument='<%#DataBinder.Eval(Container.DataItem, "ID")%>' 
      OnClick="OpenMPEEdit" /> 
    </li> 
    <div class="clear"></div> 
    </ItemTemplate> 
</asp:Repeater> 
</ul> 
<asp:Button ID="MpeFakeTarget" runat="server" 
    CausesValidation="False" Style="display:none" /> 
<asp:ModalPopupExtender ID="mpeEdit" runat="server" 
    TargetControlId="MpeFakeTarget" 
    PopupControlID="pnlEdit" 
    OkControlID="btCloseMPE" 
    BackgroundCssClass="ModalPopupBG" /> 
<asp:Panel CssClass="ModalPanel" runat="server" ID="pnlEdit"> 
    EDIT LEAD 
    <asp:Label runat="server" ID="MPETEST"></asp:Label> 
    <asp:Button runat="server" ID="btCloseMPE" text="Close" /> 
</asp:Panel> 

code Derrière

Protected Sub OpenMPEEdit(ByVal sender As Object, ByVal e As System.EventArgs) 
     Dim wLink As New LinkButton 
     wLink = DirectCast(sender, LinkButton) 
     MPETEST.Text = "ID = " & wLink.CommandArgument 
     mpeEdit.Show() 
End Sub 
+0

essayé et le li nkbutton click ne fait rien, il n'entre pas dans le code du sous-marin. Des idées? – SteveCav

+0

Ceci est le code fonctionne bien – tony

+0

Juste une idée: avez-vous changé la ligne ' CassidyTheMan