Partage
  • Partager sur Facebook
  • Partager sur Twitter

Liste deroulante, SQLDataSource et UpdatePanel

    13 avril 2011 à 17:30:24

    Bonjour,
    J'ai un SQL Data Source qui prend en parametre la valeur d'une liste deroulante.
    Ce SDS est lié à une listview qui s'affiche dans une boite de dialog jQuery lorsque je clique sur une image.
    Afin d'éviter un rechargement de la page visible par l'utilisateur, j'ai mis le liste deroulante dans un UpdatePanel, cependant il semble que cela ne suffise pas puisque quand j'ouvre la boite de dialog, celle ci est vide.(Probablement à cause du fait quel ma listeview ne reçoive aucun résultat de requete de la part du SDS ?)
    Lorsque j'enleve l'update panel et que le postback ce fait (avec un rechargement de page) tout fonctionne correctement.
    Si quelqu'un a une idée... Merci
    • Partager sur Facebook
    • Partager sur Twitter
      14 avril 2011 à 15:49:13

      Bonjour,

      la boîte de dialogue est-elle dans l'update panel ?

      Si non, essaye de la mettre dedans.
      • Partager sur Facebook
      • Partager sur Twitter
      Si ma réponse vous a aidé, n'hésitez pas à mettre un "+1" | N'oubliez pas de marquez le sujet en "Résolu"
        14 avril 2011 à 17:13:12

        Lorsque je met ma boite de dialog dans mon update panel, plus rien ne ce passe quand je clique sur l'image...
        En gros, à l'ouverture je clique sur l'image : ma boite s'affiche avec les informations correspondante à la valeur par défaut de ma liste déroulante.
        Je change la valeur de ma liste déroulante, je clique sur l'image : rien ne ce passe.
        • Partager sur Facebook
        • Partager sur Twitter
          15 avril 2011 à 9:32:26

          Bonjour,

          Il faut rajouter des Triggers a ton update panel, en l'occurence des AsyncPostBackTrigger

          <asp:UpdatePanel ID="UpdatePanel1" runat="server">
               <ContentTemplate>
          <!-- ton contenu -->
               </ContentTemplate>
               <Triggers>
                    <asp:AsyncPostBackTrigger   ControlID="Id_De_LImage" />
               </Triggers>
          </asp:UpdatePanel>
          

          Si tu veux qu'un évènement de ton UpdatePanel fasse un PostBack (pour toute la page) ajoute le aussi dans les triggers : un PostBackTrigger.
          • Partager sur Facebook
          • Partager sur Twitter
          Si ma réponse vous a aidé, n'hésitez pas à mettre un "+1" | N'oubliez pas de marquez le sujet en "Résolu"
            15 avril 2011 à 9:42:46

            Bonjour, merci pour ta réponse cependant j'ai un petit soucis,
            lorsque je met le trigger, j'ai une erreur à l'ouverture de ma page :
            "Le contrôle avec l'ID 'Image1' inscrit via RegisterAsyncPostBackControl ou RegisterPostBackControl doit implémenter INamingContainer, IPostBackDataHandler ou IPostBackEventHandler."
            Si je comprend bien il me faut un postback sur mon image ? Sauf qu'il n'y a pas l'air d'avoir cette possibilité :s
            • Partager sur Facebook
            • Partager sur Twitter
              15 avril 2011 à 10:14:22

              Utilise un ImageButton à la place :)
              • Partager sur Facebook
              • Partager sur Twitter
              Si ma réponse vous a aidé, n'hésitez pas à mettre un "+1" | N'oubliez pas de marquez le sujet en "Résolu"
                15 avril 2011 à 10:29:44

                Il y a une option "postbackUrl" avec l'imageButton, j'ai mis # comme link, ça fonctionne sauf qu'il y a rechargement de page entière au moment ou je change la valeur de ma liste déroulante...
                Je te montre le code que j'ai actuellement :

                <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                          <ContentTemplate>
                                     <asp:DropDownList ID="ddl_depart" runat="server" AppendDataBoundItems="True" 
                                     AutoPostBack="True" DataSourceID="SDS_agence" DataTextField="agence" 
                                     DataValueField="codeagence" Font-Names="Arial" Font-Size="12px" 
                                     style="text-align: left; width:150px" valign="top" value="on">
                                     </asp:DropDownList>
                         </ContentTemplate>
                </asp:UpdatePanel>
                


                <asp:UpdatePanel ID="UpdatePanel2" runat="server">
                        <ContentTemplate>
                        <asp:Panel ID="panel_pop" runat="server" BackColor="#2d6006" title="Agence">
                		                &nbsp;<asp:SqlDataSource ID="SDS_InfoAgence" runat="server" 
                                            ConnectionString="<%$ ConnectionStrings:SiteInternetFranchise %>" 
                                            SelectCommand="SELECT [code_agence], [codepost], [nom], [ville], [adresse], [telephone], [fax], [email] FROM [InfosAgence] WHERE  code_agence = @agence">
                                            <SelectParameters>
                                                <asp:ControlParameter ControlID="ddl_depart" DefaultValue="" Name="agence" 
                                                    PropertyName="SelectedValue" />
                                            </SelectParameters>
                                        </asp:SqlDataSource>
                                        <asp:FormView ID="FormView1" runat="server" DataSourceID="SDS_InfoAgence" >
                                            <ItemTemplate>
                                                <asp:Label ID="Label1" runat="server" Text='<%# Eval("nom") %>'></asp:Label>
                                                <br />
                                                <br />
                                                Adresse :
                                                <br />
                                                <asp:Label ID="Label2" runat="server" Text='<%# Eval("adresse") %>'></asp:Label>
                                                <br /><br />
                                                Téléphone:
                                                <asp:Label ID="Label3" runat="server" Text='<%# Eval("telephone") %>'></asp:Label>
                                                <br /><br />
                                                Fax :
                                                <asp:Label ID="Label4" runat="server" Text='<%# Eval("fax") %>'></asp:Label>
                                                <br /><br />
                                                Email :
                                                <asp:Label ID="Label5" runat="server" Text='<%# Eval("email") %>'></asp:Label>
                                            </ItemTemplate>
                                        </asp:FormView>
                        </asp:Panel>
                        </ContentTemplate>
                        <Triggers>
                          <asp:AsyncPostBackTrigger ControlID="ImageButton1" />
                        </Triggers>
                        </asp:UpdatePanel>
                


                <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/Images/loupe.gif" PostBackUrl="#" />
                
                • Partager sur Facebook
                • Partager sur Twitter
                  15 avril 2011 à 10:39:46

                  Met tout dans le même update panel.
                  Essaye d'enlever le PostBackUrl, ajoute peut être un PostBack="True" si ça ne fonctionne pas.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Si ma réponse vous a aidé, n'hésitez pas à mettre un "+1" | N'oubliez pas de marquez le sujet en "Résolu"
                    15 avril 2011 à 10:49:58

                    Avec tout dans le même panel, le rafraîchissement de la page ne ce fait plus, sauf que lorsque je clique sur l'image pour ouvrir la popup...
                    Rien ne ce passe. Que ce soit avec un postbackurl, avec un postback="true", ou sans postback...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      15 avril 2011 à 10:53:54

                      il faut que tous les contrôles qui génèrent des postbacks soient enregistrés dans les triggers, après tu choisis si c'est async, rafraichissement seulement du panel; soit normal, rafraichissement de toute la page.

                      le fonctionnement de ta page c'est :
                      1- chargement des données dans la listbox
                      2- execution de la requetes qui prend en parametre la valeur sélectionnée dans la listbox
                      3- a chaque changement de la valeur de la listbox, la requete est lancée
                      4- clic sur le bouton, qui ouvre un popup qui contient la listview liée à la requete

                      c'est ça ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Si ma réponse vous a aidé, n'hésitez pas à mettre un "+1" | N'oubliez pas de marquez le sujet en "Résolu"
                        15 avril 2011 à 11:12:54

                        Ouep c'est ça.
                        J'ai un SDS qui charge des données dans la listbox et un autre qui charge les données dans mon panel en fonction de la valeur sélectionné dans la listbox.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          15 avril 2011 à 11:17:48

                          Ajoute dans les trigger la listbox, pour son evenement selectedindexchanged, je pense que le problème vient de la, il ne détecte pas le changement de valeur donc ne met pas à jour la requete.

                          Ton popup s'affiche ?
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Si ma réponse vous a aidé, n'hésitez pas à mettre un "+1" | N'oubliez pas de marquez le sujet en "Résolu"
                            15 avril 2011 à 11:29:16

                            j'ai mis un <asp:AsyncPostBackTrigger ControlID="ddl_depart" />, mais nan rien ne change la popup ne s'affiche pas.
                            Le truc c'est que je vois bien que mon panel est bien remplis, j'ai enlevé le style:display pour qu'il apparaisse dans ma page, et les données change bien quand je change de valeur dans ma liste.
                            Mais pour une raison inconnue il n'arrive pas à ouvrir la popup...
                            • Partager sur Facebook
                            • Partager sur Twitter
                              15 avril 2011 à 11:31:28

                              tu fais comment pour ouvrir ton popup ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Si ma réponse vous a aidé, n'hésitez pas à mettre un "+1" | N'oubliez pas de marquez le sujet en "Résolu"
                                15 avril 2011 à 11:33:50

                                $('#ctl00_ContentPlaceHolder1_ImageButton1').click(function() {
                                           $('#ctl00_ContentPlaceHolder1_panel_pop').dialog('open');
                                           return false;
                                       });
                                


                                L'ouverture fonctionne le premier coup avec la valeur par défaut de ma liste.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  15 avril 2011 à 11:42:07

                                  Je n'ai jamais utilisé de JQuery, ce lien peut peut-être t'aider, c'est avec de progressbar, regarde vers la fin "Jquery l'invincible"
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Si ma réponse vous a aidé, n'hésitez pas à mettre un "+1" | N'oubliez pas de marquez le sujet en "Résolu"
                                    15 avril 2011 à 11:57:26

                                    J'ai essayé le truc...
                                    Donc là ma popup s'ouvre bien à chaque fois sauf que les valeur dedans ne change pas même quand je change la valeur de ma listbox, c'est toujours ma valeur par défaut qui ressort...
                                    De plus, mon panel (sans le style:display) n'apparait plus et je n'arrive donc pas à voir si les données sont bien changé...
                                    Ahhhhh c'est un truc de fou...
                                    Merci en tout cas pour ton aide ^^'
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      15 avril 2011 à 12:04:48

                                      Est-ce que tu peux envoyer ton code ASP.net, pour voir la structure de la page?
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Si ma réponse vous a aidé, n'hésitez pas à mettre un "+1" | N'oubliez pas de marquez le sujet en "Résolu"
                                        15 avril 2011 à 12:08:33

                                        Hum je sais pas si j'ai le droit de filer tout ^^'
                                        Mais en gros ma page est composé :
                                        -Une master page
                                        -Une MultiView
                                        -4 View.
                                        Et tout le code dont on parle depuis le début est situé dans ma View 1.
                                        Je sais pas si ça t'aide ? :s
                                        Je vais voir si j'peux te filer tout le code.
                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        Liste deroulante, SQLDataSource et UpdatePanel

                                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                        • Editeur
                                        • Markdown