Bonjour à tous,
je viens a vous car je ne parviens pas à me sortir d'une situation pour le moins enervante.
Je construis une page dans laquelle l'utilisateur va saisir une annonce.
Pour
cela, il selectionne un bureau, ce bureau a par défaut un contact que
j'affiche dans une textbox dont la propriété enabled=false
Je
propose cependant une modification de ce contact et passe pour cela par
un PopupModalExtender dans lequel j'affiche une Datalist de Linkbutton.
Au clic sur un linkbutton, je souhaite mettre a jour ma textbox avec la donnée selectionnée.
Au niveau du code:
ma textbox et le targetcontrolId du popupmodal sont dans un updatePanel englobant.
Ma
popup est elle aussi dans un 2e updatePanel car je propose deux types de
choix dans la datalist. Ce qui signifie que je dois mettre a jour cette popup au clic sur un des deux boutons.
Mon premier updatePanel,
celui qui englobe tout ce code a un UpdateMode a Conditional, celui qui
contient la datalist est a Always.
La datalist est bien mise a jour
lorsque je clique sur un bouton, mais le second updatePanel ne fais
pas la mise a jour du textbox comme demandé. En fait, le popUp ne se ferme pas alors que je passe bien dans l'evenement SelectedIndexChanged de la Datalist.
Je met un peu de code pour etre plus clair:
<%-- UPDATE PANEL CONTACT CANDIDAT --%>
<td><asp:Literal ID="LitContact" runat="server" text="Contact Candidat " EnableViewState="false"></asp:Literal> :
</td>
<td>
Voila l'UPDATEPANEL ENGLOBANT
<asp:UpdatePanel runat="server" ID="UpdatePanelContactCandidat" UpdateMode="conditional">
<ContentTemplate>
<asp:TextBox ID="TxtContact" runat="server" Width="160px" MaxLength="100" Enabled="false"></asp:TextBox> <asp:ImageButton runat="server" ID="IBContactCandidat" ImageUrl="~/App_Themes/Default/Images/Modif.jpg" Width="30px" Height="30px"/>
<%-- Modal Popup Contact Candidat --%>
<asp:Panel ID="ListeEmployes" runat="server" style="display:none;" CssClass="modalPopup">
<div class="modalPopupHeader">
<div class="TitrePopup"><asp:literal ID="LitTitrePopUp" runat="server" EnableViewState="false" Text="<%$ Resources: Resource, RLListeEmploye %>"></asp:literal></div>
<div class="ClosePopup">
<asp:ImageButton ID="IBEnregistrer" runat="server" ImageUrl="~/images/B_save1.gif" EnableViewState="false" />
<asp:ImageButton ID="IBFermePopup" runat="server" ImageUrl="~/images/B_ClosePopup.gif" EnableViewState="false" />
</div>
</div>
Le second UPDATEPANEL ME SERT A METTRE A JOUR LA DATALIST CONTENUE DANS LE POPUP SELON LE CHOIX DE L'UTILISATEUR.
<asp:UpdatePanel ID="UpdatePanelListeEmployes" runat="server" >
<contenttemplate>
<div class="DivButtonPopup">
<asp:LinkButton ID="LBListeEmployesBureau" runat="server" Text="<%$ Resources:resource, RTEmploye %>" CssClass="ButtonPopup" EnableViewState="false"></asp:LinkButton>
<asp:LinkButton ID="LBListeEmployesPays" runat="server" Text="<%$ Resources:resource, RTEmploye %>" CssClass="ButtonPopup" EnableViewState="false"></asp:LinkButton>
</div>
<div class="DivListePopup">
<asp:DataList ID="DLEmploye" runat="server" CssClass="ListePopup" EnableViewState="true" DataKeyField="EMP_ID">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="select">
<p>
<span class="Titre4"><%#DirectCast(Container.DataItem, DataRowView)("EMP")%></span>
</p>
</asp:LinkButton>
</ItemTemplate>
<SelectedItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="select">
<p>
<span class="Titre4"><%#DirectCast(Container.DataItem, DataRowView)("EMP")%></span>
</p>
</asp:LinkButton>
</SelectedItemTemplate>
</asp:DataList>
</div>
<div class="InfoLigne"><asp:Literal ID="NbRows" runat="server" EnableViewState="false" Text=""></asp:Literal></div>
</contenttemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="LBListeEmployesBureau" />
<asp:AsyncPostBackTrigger ControlID="LBListeEmployesPays" />
</Triggers>
</asp:UpdatePanel>
<div class="modalPopupFooter">
</div>
</asp:Panel>
<%-- Modal Popup Contact Candidat--%>
<ajaxControlToolkit:ModalPopupExtender ID="ModalPopupExtenderContactCandidat" runat="server"
TargetControlID="IBContactCandidat"
PopupControlID="ListeEmployes"
BackgroundCssClass="modalBackground"
CancelControlID="IBFermePopup"
Y="50"
/>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="IBContactCandidat" />
</Triggers>
</asp:UpdatePanel>
Pour le code-behind:
pas grand chose de compliqué, je charge mon deuxieme update panel au clic sur un bouton. Et je fais reagir ma datalist a l'evenement SlectedIndexChanged. Cet evenement est pris en compte, ma méthode fonctionne en pas a pas. Mais le popup ne se ferme pas et ma textbox n'est pas mise a jour.
PS: désolé pour les admins ou modo, j'ai posté en ASP3 et n'ai pas réussi a supprimer mon post, excusez moi.