2016-05-10 19 views
0

Ich habe einen Datalist mit Binddata aus Code hinter und ich versuche, einen Ajax modalpopupextender zu jedem Element hinzuzufügen. Dieses modalpopup muss das rechte Panel mit dem Problem öffnen, dass die Zielkontroll-ID immer dieselbe Schaltfläche am Ende der Seite ist.Öffnen Sie einen ModalPopupExtender aus der aktivierten Radiobutton in einem Datenlogger

Ich bekomme den Radiobutton ausgewählt, aber ich kann das modalpopup nicht öffnen, das äquivalent ist. Es öffnet immer das erste Panel.

Kann mir jemand helfen? Ist das überhaupt möglich?

C#

protected void btnValidateGift_Click(object sender, EventArgs e) 
    { 
     if (Request.Form["gift"] != null) 
     { 

     } 
    } 

aspx

<asp:DataList ID="datalistReward" runat="server" RepeatDirection="Vertical" RepeatColumns="3" CssClass="datalistGift"> 
    <ItemTemplate> 
     <div class="giftDiv"> 
      <div class="giftTitle"> 
       <%# DataBinder.Eval(Container.DataItem, "name") %> 
      </div> 
      <div> 
       <img width="60%" src="img/brindes/<%# DataBinder.Eval(Container.DataItem, "img") %>.png" /> 
      </div> 
      <div id="divRadioBtnGift" runat="server" style="width: 10%; margin: auto;"> 
       <input type='radio' id='radioBtnGift_<%# DataBinder.Eval(Container.DataItem, "value") %>' 
        name='gift' value='<%# DataBinder.Eval(Container.DataItem, "id") %>' /> 
      </div> 
     </div> 
     <asp:ModalPopupExtender ID="ModalPopUpReward" BehaviorID="modalBehaviorPopupReward" runat="server" PopupControlID="panelSelectReward" 
      CancelControlID="btnCloseReward" BackgroundCssClass="modalBackground" TargetControlID="btnValidateGift" /> 
     <asp:Panel ID="panelSelectReward" runat="server" CssClass="modalPopup" align="center" Style="display: none"> 
      <div style="background-color: aqua; border: 1px solid red;"> 
       <img width="60%" src="img/brindes/<%# DataBinder.Eval(Container.DataItem, "img") %>.png" /> 
       <asp:ImageButton ID="btnCloseReward" runat="server" Text="Close" OnClientClick="CloseModalPopUp()" /> 
      </div> 
     </asp:Panel> 
    </ItemTemplate> 
</asp:DataList> 

<asp:Button ID="btnValidateGift" Text="Validar >" runat="server" CssClass="divButton" OnClick="btnValidateGift_Click" /> 

Edit1: Ich habe versucht, die eine benutzerdefinierte Zeichenfolge an der Tafel ID wie dieses <% # DataBinder.Eval (Container.DataItem "hinzufügen id ")%>. Das kompiliert sich aber nicht. Gibt es eine Chance, dass das funktioniert?

Antwort

2

Sie verwenden das serverseitige Ereignis , um das Popup anzuzeigen. Es zeigt nur die ersten (oder letzten) Daten, die während des Seitenrenderings ausgewertet wurden.

Um den Inhalt von ModalPopup zu ändern, müssen Sie OnClientClick Ereignis + asynchronen Aufruf verwenden, um das Popup mit den Daten zu füllen, die Sie benötigen. Here is the example Client-Ereignisse mit ModalPopup verwenden.

+1

Das ist sehr ähnlich zu der Lösung, die ich gefunden habe. Und es funktioniert. Danke, dass Sie sich die Zeit genommen haben zu antworten. – Lucky