Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Atteint de JavaScriptite Aiguë [Cyril Durand]

Expert ASP.net Ajax et WCF, Cyril Durand parle dans son blog de point techniques sur ASP.net, ASP.net Ajax, JavaScript, WCF et .net en général. Cyril est également consultant indépendant, n'hésitez pas à le contacter pour de l'assistance sur vos projets

Actualités

  • Blog de Cyril DURAND, passionné de JavaScript, Ajax, ASP.net et tout ce qui touche au developpement Web Client-Side.

    N'hésitez pas à me contacter pour vos projets .net : architecture, accompagnement, formation, ...

    View Cyril Durand's profile on LinkedIn
    hit counters


    Expertise Commerce server et BizTalk

[Atlas] Cascading UpdatePanels et raffraichissement illogiques
Le framework Atlas de Microsoft introduit la notion d'UpdatePanel qui permet de rafraichir une partie de la page grâce à la technologie AJAX et cela trés simplement.
 
J'ai appronfondi l'utilisation des UpdatePanels et on peut faire des choses vraiment trés sympa mais il manque encore certaines fonctionalités.
 
Imaginons une application avec un bouton (jusque la ça va ;-)). Lorsque l'on click sur le bouton on raffraichit une zone de la page qui contient un nouveau Button, si on click sur ce dernier button on va raffraichir un autre UpdatePanel qui affiche l'heure. Le problème est que si un contrôle déclenche un postback et  est situé dans un UpdatePanel alors il va rafraichir son UpdatePanel. Du coup lorsque l'on click sur le 2ème button, les 2 updatepanels sont rafraichis.
 
Prenons un exemple :
 
Au départ j'ai mon button :
 
 
Lorsque je click sur mon button "Afficher Button2" j'affiche le button dans le premier UpdatePanel, on voit bien que seul l'heure de cet UpdatePanel a été mis à jour
Maintenant si je click sur le button "Afficher l'heure" on voit que les 2 updatepanels sont mis à jour !!! Alors que je n'ai nullement besoin de rafraichir le premier updatepanel. Ceci est du au fait que le 2ème boutton est situé dans un updatepanel.
 
Dans mon exemple ce n'est pas dérangeant, mais si le rendu de l'UpdatePanel est lourd cela gaspille inutillement des ressources serveurs et réseaux !
 
Ce comportement est pratique dans la majorité des cas, mais certaines fois il serait bien de pouvoir passer outre. Ce que j'aimerais c'est une nouvelle propriété sur l'updatepanel qui indique si oui ou non les contrôles enfants ont automatiquement un trigger sur leur updatepanel "parent".
 
Qu'en pensez vous ?
 

Pour information voici le code utilisé pour la démo :

<%
@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<
script runat="server">

      
protected
void Button1_Click(Object sender, EventArgs e)
      {
            Button2.Visible =
true;
      }

      protected void Button2_Click(Object sender, EventArgs e)
      {
            LitHour.Text =
DateTime.Now.ToLongTimeString();
      }

</
script>

<
html xmlns="http://www.w3.org/1999/xhtml" >
      <
head runat="server">
            <title>Cascading UpdatePanels</title>
            <style type="text/css">
                  div.Box {width:200px; height:100px; margin:20px; border:solid 1px #F0F;}
            </style>
      </
head>
      <
body>
            <atlas:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" />
            <form id="form1" runat="server">
                  <asp:Button ID="Button1" runat="server" Text="Afficher button2" OnClick="Button1_Click" />

                 
<
atlas:UpdatePanel ID="UpdatePanel1" runat="server" Mode="Conditional">
                        <ContentTemplate>
                              <div class="Box">
                                    <em>Dernier rafraichissement de ce panel à <%=DateTime.Now.ToLongTimeString() %></em>
                                    <asp:Button ID="Button2" runat="server" Visible="false" Text="Afficher l'heure" OnClick="Button2_Click" />
                              </div>
                        </ContentTemplate>
                        <Triggers>
                              <atlas:ControlEventTrigger ControlID="Button1" EventName="Click" />
                        </Triggers>
                  </atlas:UpdatePanel>

                 
<
atlas:UpdatePanel ID="UpdatePanel2" runat="server" Mode="Conditional">
                        <ContentTemplate>
                              <div class="Box">
                                    <em>Dernier rafraichissement de ce panel à <%=DateTime.Now.ToLongTimeString() %></em>
                                    <br />
                                    <asp:Literal ID="LitHour" runat="server" />
                              </div>
                        </ContentTemplate>
                        <Triggers>
                              <atlas:ControlEventTrigger ControlID="Button2" EventName="Click" />
                        </Triggers>
                  </atlas:UpdatePanel>

           
</
form>
      </
body>
</
html>
Posted: mardi 1 août 2006 00:52 par cyril
Classé sous :
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01