2010-12-04 7 views
1

Ich arbeite mit dem Ajax ModalPopupExtender innerhalb eines Repeaters, aber es zeigt nicht wegen irgendeines Javascriptfehlers und anderer Sachen. Könnte jemand ein Beispiel dafür geben, wie man das macht?Ajax Modal Popup Extender mit Repeater

Antwort

4

So wie ich dies getan haben:

  1. Platz der ModalPopupExtender außen (nach) der Repeater-Steuerung.
  2. Fügen Sie eine Schaltfläche hinzu, die als "falsches" Ziel für den ModalPopupExtender fungiert, und platzieren Sie diese außerhalb (nach) des Repeaters. Verwenden Sie 'Style = "display: none"', um die Schaltfläche für den Benutzer auszublenden. Kein OnClick-Ereignis sollte an diese Schaltfläche gebunden sein.
  3. Platzieren Sie das Zielpanel des ModalPopupExtender außerhalb des Repeaters.
  4. Innerhalb der Elementvorlage des Repeaters einen Linkbutton mit einem OnClick hinzufügen, die Linkbutton ermöglicht es Ihnen, das Commandargument zu verwenden, die an einen Databinder gebunden werden können - sagen für einen Datensatz ID
  5. Im Code-Behind eine Unter erstellen, die die Griffe onclick event für den Linkbutton im Repeater. Führen Sie bei Bedarf eine direkte Verknüpfung des Absenderobjekts mit einer Verknüpfungsschaltfläche aus, damit Sie Zugriff auf das Befehlsargument haben.
  6. Füllen Sie das ModalPopupExtender Zielfeld in geeigneter Weise
  7. ein ModalPopupExtender.show Do()

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 hinter

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

dieses und das li Versuchte Klicken auf nkbutton tut nichts, es gibt den Code des Untersystems nicht ein. Irgendwelche Ideen? – SteveCav

+0

Das ist Code funktioniert gut – tony

+0

Nur ein Gedanke: haben Sie die ' CassidyTheMan