IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

UpdatePanel ne se mettant pas à jour.


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 15
    Par défaut UpdatePanel ne se mettant pas à jour.
    Bonjour à tous,

    Mon probleme est le suivant :
    - dans un de mes usercontrols, j'ai un updatepanel
    - dans cet update panel, j'ai un custom control 'styledtable' qui contient un itemplate 'contenttemplate', et un panel contenant un linkbouton permettant d'affiche/cacher mon custom control
    - dans ce content se trouve mes champs et bouton devant renvoyer un formulaire.

    mon custom control me sert uniquement à definir une table stylée et hérite de Table et de INamingContainer, les itemplate sont en fait des styletableitem heritant de TableCell et INamingcontainer.

    lorsque je clique sur mon linkbutton mon updatepanel devrais se rafraichir et afficher mon custom control contenant mon formulaire.
    or les evenement sont bien executé (en debug avec breakpoint il execute bien ce qu'il doit faire mettre le custom control visible) mais a l'ecran rien ne change comme si l'update panel ne se refraichissait pas ou ne catchais pas l'event du click sur le linkbouton.

    lorsque je remplace mon custom control 'styledtable' par un simple panel cela fonctionne parfaitement (mais je n'ai plus ma table stylée :p).

    ce qu'il me semble bizarre c'est que le linkbutton n'est meme pas dans le custom control remplacé ...

    si quelqu'un aurait une petite idée ou pourait m'aiguiller je lui en serait reconnaissant

    voici quelques extrait de code :


    le custom control
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
     
        [System.Web.UI.ToolboxData(@"<{0}:StyledTable runat=""server""></{0}:StyledTable>")]
        public class StyledTable : System.Web.UI.WebControls.Table, System.Web.UI.INamingContainer
        {
     
            public class StyledTableItem : System.Web.UI.WebControls.TableCell, System.Web.UI.INamingContainer
            {
            }
     
            private System.Web.UI.ITemplate contentTemplate = null;
            private StyledTableItem content = null;
     
            [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
            public StyledTableItem Content
            { get { this.EnsureChildControls(); return content; } }
     
            [System.Web.UI.TemplateContainer(typeof(StyledTableItem))]
            [System.Web.UI.PersistenceMode(System.Web.UI.PersistenceMode.InnerProperty)]
            [System.Web.UI.TemplateInstance(System.Web.UI.TemplateInstance.Single)]
            public System.Web.UI.ITemplate ContentTemplate { get { return contentTemplate; } set { contentTemplate = value; } }
     
     
            protected override void CreateChildControls()
            {
                base.CreateChildControls();
                SetControls();
            }
     
            void SetControls()
            {
                if (loaded) return;
                loaded = true;
                //Controls.Clear();
                System.Web.UI.WebControls.TableRow rowContent = new System.Web.UI.WebControls.TableRow();
                rowContent.CssClass = CssClass + "Content";
     
                System.Web.UI.WebControls.TableCell cellContentLeft = new System.Web.UI.WebControls.TableCell();
                cellContentLeft.CssClass = CssClass + "ContentLeft";
                StyledTableItem cellContentCenter = new StyledTableItem();
                cellContentCenter.CssClass = CssClass + "ContentCenter";
                System.Web.UI.WebControls.TableCell cellContentRight = new System.Web.UI.WebControls.TableCell();
                cellContentRight.CssClass = CssClass + "ContentRight";
     
                if (ContentTemplate != null) ContentTemplate.InstantiateIn(cellContentCenter);
     
                rowContent.Cells.Add(cellContentLeft);
                rowContent.Cells.Add(cellContentCenter);
                rowContent.Cells.Add(cellContentRight);
     
                Rows.Add(rowContent);
            }
     
            public StyledTable()
            {
                base.Init += new EventHandler(StyledTable_Init);
            }
     
            void StyledTable_Init(object sender, EventArgs e)
            {
                SetControls();
            }
     
            public override System.Web.UI.ControlCollection Controls
            {
                get
                {
                    this.EnsureChildControls();
                    return base.Controls;
                }
            }
    le controle ascx
    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
    26
    27
    28
    29
     
    <asp:UpdatePanel ID="upPage" runat="server">
        <ContentTemplate>
            <asp:Panel ID="pEdit" runat="server" Visible="False" meta:resourcekey="pEdit" DefaultButton="bSave">
                <div>
                    <ep:StyledTable ID="stEdit" runat="server" CssClass="editFrame">
                        <ContentTemplate>
                        <table class="editTable" style="width:auto;padding-left:auto;padding-right:auto;">
                            <tr>
                                <td class="editFieldName"><asp:Label ID="lPageTitle" runat="server" Text="Title" meta:resourcekey="lPageTitle" /></td>
                                <td class="editFieldValue">
                                    <asp:TextBox ID="tbPageTitle" runat="server" ValidationGroup="page" MaxLength="255" CssClass="veryLongField" meta:resourcekey="tbPageTitle" />
                                    <asp:RequiredFieldValidator ID="rfvPageTitle" ControlToValidate="tbPageTitle" runat="server" ValidationGroup="page" Text="*" ErrorMessage="Title is a required field." meta:resourcekey="rfvPageTitle" />
                                </td>
                            </tr>
                            <tr>
                                <td colspan="2" class="editFieldSave"><asp:Button ID="bSave" runat="server" Text="Save" ValidationGroup="page" meta:resourcekey="bSave" /></td>
                            </tr>
                        </table>
                        </ContentTemplate>
                    </ep:StyledTable>
                </div>
            </asp:Panel>
            <asp:Panel ID="pLink" runat="server" meta:resourcekey="pLink">
                <asp:LinkButton ID="lbEditPage" runat="server" Text="Edit page" meta:resourcekey="lbEditPage" />
            </asp:Panel>
     
        </ContentTemplate>
    </asp:UpdatePanel>

    le code du controle ascx (.cs)
    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
    26
    27
     
        public partial class Page : EasyPublish.Web.UI.UserControl
        {
            protected void Page_Init(object sender, EventArgs e)
            {
                if (Page.BizPageCulture == null || !Page.BizMemberRoles.ContainsKey("Editor")) Visible = false;
                else
                {
                    lbEditPage.Click += new EventHandler(lbEditPage_Click);
                    bSave.Click += new EventHandler(bSave_Click);
                }
            }
     
            void bSave_Click(object sender, EventArgs e)
            {
                pEdit.Visible = false;
                pLink.Visible = true;
     
            }
     
            void lbEditPage_Click(object sender, EventArgs e)
            {
                pEdit.Visible = true;
                pLink.Visible = false;
     
            }
        }

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2008
    Messages : 31
    Par défaut
    salut,

    je dis peut etre une connerie mais as tu tenter avec UpdateMode=Always dans ton update panel de ton ascx ?

    mamat.

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    Regarde ca, peut etre ca pourra t'aider:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (DesignMode || Page == null) return;
            var sm = ScriptManager.GetCurrent(Page);
            if (sm == null)
            {
                throw new MissingFieldException("The ScriptManager is needed on the page!");
            }
            sm.RegisterAsyncPostBackControl(<control which initiates async postback>);
    Je l'ai trouvé ici:
    http://stackoverflow.com/questions/2...s-dropdownlist

Discussions similaires

  1. [VBA-E] Liaisons qui ne se mettent pas à jour (macro trop rapide?)
    Par minikisskool dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 21/11/2005, 09h36
  2. Update Récalcitrante !! Ne met pas à jour !
    Par samlepiratepaddy dans le forum Access
    Réponses: 14
    Dernier message: 28/10/2005, 09h31
  3. un update qui ne met pas à jour
    Par dor_boucle dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/10/2005, 09h31
  4. [CR 8.5] Objet ole lié (BMP) ne se remet pas à jour .
    Par rodrigue50 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 12/02/2004, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo