Bonjour à tous,

j'ai un petit soucis d'update panel, le soucis est que je pense avoir déclaré correctement l'ensemble de la fonctionnalité (je l'ai testé dans une solution website simple), mais dans mon site principale, il ne fonctionne pas.

Je m'explique.

J'utilise une dropDownList qui doit rafraichir une div avec des informations supplémentaires.

Cette DropDownList est contenue dans un control ascx

Voici une partie de mon code aspx:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" />
 
                                <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" >
        <ContentTemplate>
 
          <div class="right-select">
 
 
                                <asp:DropDownList  data-usesprite="smallIcons" ID="Select_DeliveryInfos" runat="server" AutoPostBack="true" OnSelectedIndexChanged="Select_DeliveryInfos_SelectedIndexChanged" ></asp:DropDownList>
 
                              </div>
 
                                <div class="clear"></div>
                                <div class="links_delivery" id="deliv_info" runat="server">
                                    <span id="deliv_info_date" runat="server"></span><br />
                                    Voir le <a>plan</a> - <a>les horaires</a>
                                </div>
 
                                   </ContentTemplate>
        <Triggers>
                              <asp:AsyncPostBackTrigger ControlID="Select_DeliveryInfos" EventName="SelectedIndexChanged"/>
 
        </Triggers>
    </asp:UpdatePanel>
Voici mon code CS levé par l'evenement OnSelectedIndexChanged de ma dropDownList:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
protected void Select_DeliveryInfos_SelectedIndexChanged(object sender, EventArgs e)
        {
            int currentIndex;
 
            if (int.TryParse(Select_DeliveryInfos.SelectedItem.Value, out currentIndex) && currentIndex != -1)
            {
                deliv_info.Visible = true;
 
               //Code qui effectue un calcul
            }
            else
            {
                deliv_info.Visible = true;
            }
            UpdatePanel1.Update();
        }
Mon Page_Load (l'appel à la méthode a été commenté car ça ne change rien):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
protected void Page_Load(object sender, EventArgs e)
{
   //ScriptManager1.RegisterAsyncPostBack(Select_DeliveryInfos);
}
J'utilise Firebug afin de vérifier mon appel, et ma réponse:

Le POST:


La REPONSE:
Dans la réponse, la div qu ia été calculée est bien présente, c'est celle dont l'id est: MainContentAreaPlaceHolder_ctlBasketInvoice_FastCheckout_deliv_info


J'ai écumé le web, j'ai essayé pas mal de chose, mais je suis bloqué.

Voici ce que j'ai essayé:
- changé l'updateMode en always sans utilisé de trigger
- j'ai sorti ma dropDownList de mon updatePanel en laissant le trigger sans succés
- Vérifié dans le web.config si la balise suivante était présente, auquel cal je l'aurai supprimé: <xhtmlConformance mode="Legacy"/>
- Utilisé le trigger PostBackTrigger. le probleme est qu'il me reload totalement la page, et me fait perdre des données (c'est pas ce que je recherche en faisant un update panel ;-) )


Comme je le disais, si j'isole ce code dans une page simple, aucun soucis...
Autre précision: La page contenant le userControl ne comporte pas d'autres UpdatePanel.

Quelqu'un a t'il une idée?

Merci pour votre aide,

david