2010-12-04 150 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