2010-12-04 56 views

回答

4

的方式我已经做到了这一点:

  1. Repeater控件的放置ModalPopupExtender外(后)。
  2. 添加一个按钮,该按钮将充当ModalPopupExtender的“假”目标,将其放置在中继器的外部(之后)。使用'Style ='display:none''来隐藏用户的按钮。没有OnClick事件应该绑定到这个按钮。
  3. 将ModalPopupExtender的目标面板放置在Repeater外部。
  4. 在中继器的项目模板中添加一个带有OnClick的链接按钮,使用linkbutton允许您使用commandArgument,它可以绑定到DataBinder - 比如记录ID
  5. 在代码隐藏中,创建一个处理在转发器中的linkbutton的onclick事件。如果需要,请将发件人对象的directCast作为链接按钮,以便您可以访问commandArgument。
  6. 填充ModalPopupExtender目标小组适当
  7. 做一个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> 

代码隐藏

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

尝试这样做,李nkbutton单击什么也不做,它不会输入子代码。有任何想法吗? – SteveCav 2012-04-21 11:52:18

相关问题