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 :

composant ascx et page_load


Sujet :

ASP.NET

  1. #1
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut composant ascx et page_load
    Bonjour, j'ai un composant ascx que j'utilise dans plusieurs page. Dans le code behind j'utilise le page_load et j'ai une autre fonction.

    Au final lorsque j'utilise le composant dans une page aspx. Je fais NomObjet.MaFonction().

    Jusque là pas de pb. Il rentre bien dans la fonction du ficher ascx.cs par contre il ne passe pas par le pageLoad(), est ce normal?

    Si quelque'un a une explication je suis preneur.

    Merci

  2. #2
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    Est ce que tu le charges bien dans ta page ton contrôle ? fais tu bien un loadControl ou te contentes tu de faire un mapage.Controls.Add(monUserControl)?

  3. #3
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    euh en fait ni l'un ni l'autre j'ai l'impression.

    voilà pour le 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
    28
    29
    30
    31
    32
    33
    public partial class Multisite : System.Web.UI.UserControl
    {
        ArrayList sites = new ArrayList();
        public event EventHandler OnCkbGlobalCheckedChanged;
        public event EventHandler OnCkbSelectionCheckedChanged;
        public event ServerValidateEventHandler OnVal;
     
        protected void Page_Load(object sender, EventArgs e)
        {
            SqlDataSourceSite.ConnectionString = Connexion.getChaineConnexion();
        }
     
        public void TestNiveau()
        {
            SqlDataSourceSite.ConnectionString = Connexion.getChaineConnexion();
            PersonneConnecte PC = (PersonneConnecte)Session["UserID"];
            if (PC._NivAdmin == 3 || PC._NivAdmin == 2)
            {
                SqlDataSourceSite.SelectCommand = ProcedureSCUS.SiteAdmin3_2();
                GridViewMultiSociete.Enabled = true;
                ckbGlobal.Visible = true;
            }
            if (PC._NivAdmin == 1 || PC._NivAdmin == 0)
            {
                SqlDataSourceSite.SelectCommand = ProcedureSCUS.SiteAdmin1_0(PC._siteid);
                GridViewMultiSociete.Enabled = false;
                GridViewRow row = GridViewMultiSociete.Rows[0];
                CheckBox chkSelection = (CheckBox)row.FindControl("chkSelection");
                chkSelection.Checked = true;
                SessionUtilsSCUS.Site = GridViewMultiSociete.DataKeys[0].Values[0].ToString();
                ckbGlobal.Visible = false;
            }
        }
    pour le code behind d'un page utilisant le composant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    protected void Page_Load(object sender, EventArgs e)
        {
            this.MS1.OnCkbGlobalCheckedChanged += new EventHandler(MS1_OnCkbGlobalCheckedChanged);
            this.MS1.OnCkbSelectionCheckedChanged += new EventHandler(MS1_OnCkbSelectionCheckedChanged);
     
            if (!IsPostBack)
            {
                string libelle = Resources.Dictionnaire.TitreCategorieAction;
                SessionUtilsSelection.UrlPrecedente = Request.UrlReferrer.ToString();
                //btnAnnuler.PostBackUrl = SessionUtilsSelection.UrlPrecedente;
     
                MS1.TestNiveau();
    Et j'ai la référence au niveau de la page aspx.

    En fait, il faut que je monte la fonction ou quelque chose ?

  4. #4
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    Dans ta apge aspx , tu as seulement la référence a ton composant en haut de ta apge, ou tu a aussi ecrit quelquechose du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <uc:MonComposant runat=server></uc:MonComposant>
    Dans ce dernier cas, ton composant est alors associé à la page, et il n'y a aucune raison pour qu'il ne passe pas par ton Page_Load.

    Tiens vérifies aussi que tu aies bien AutoEventWireup="true" dans ta page.

  5. #5
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Voilà, la partie qui se trouve dans la page 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
     
    <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="AjoutModifCategorieAction.aspx.cs" Inherits="AjoutModifCategorieAction" Title="Ajout/modif Catégorie d'action" %>
     
    <%@ Register Src="~/Multisite.ascx" TagName="Multisite" TagPrefix="MS" %>
     
    <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <div id="PartieUnique" class="PDACUnique">
         <div class="selection">
            <asp:Panel runat="server" ID="PanelContenu" CssClass="selecglobal">
                <br />
                <asp:Label ID="lblTitreAjout" runat="server" CssClass="TitreSelection"></asp:Label>
                <br />
                <br />
                <asp:ScriptManager ID="ScriptManager1" runat="server">
                </asp:ScriptManager>
                <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                    <ContentTemplate>
                        <MS:Multisite ID="MS1" runat="server"/>
                        <br />
    Je fais bien une référence comme tu me l'indique, je mets un point d'arret dans le page_load de mon ascx et il ne passe pas dedans, par contre il execute directement la méthode associé.(Dans ce cas là TestNiveau).

    Y'a un truc bizarre qui se passe. Bon une solution bête et méchante consiste à déplacer la ligne du page load et de la mettre directement dans la fonction mais bon.

    Une idée?

  6. #6
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    Essaye en déplaçant ton objet hors de ton updatepanel pour voir (erf je commence à être à court de "bonnes" idées...)

  7. #7
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Pourquoi pas, mais le problème c'est que j'ai besoin du updatePanel. J'ai une liste déroulante à l'interieur et il me faut sélectionner sans refraichissement de page.

    En plus de ça je ne t'aide pas beaucoup. En attendant j'ai déplacer le code dans l'autre fonction , ça me plait moyennement mais en attendant ça ne plante pas.

    Merci pour ta contribution

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 489
    Par défaut
    Il manquerait pas un override dans cette ligne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    protected override void Page_Load

  9. #9
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Dans quelle fonction Page_Load, celle du composant ou celle de la page?

  10. #10
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 489
    Par défaut
    les deux, non ?

  11. #11
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Peut etre, mais ce qui me parait bizarre c'est que je n'ai jamais vu le override sur les exemples que j'avais trouvé

  12. #12
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    pas besoin de l'override si tu as :

    pour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    protected void Page_Load(object sender, EventArgs e)
    par contre si pour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    protected override void OnLoad(EventArgs e)

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/01/2014, 15h33
  2. [Débutant] Problème pour accéder à un objet d'un composant ascx
    Par Toruk dans le forum ASP.NET
    Réponses: 1
    Dernier message: 07/03/2012, 17h36
  3. [MOSS] Personnaliser le style du composant Welcome.ascx
    Par Peltchag dans le forum SharePoint
    Réponses: 2
    Dernier message: 14/01/2008, 09h05
  4. Installer ses composants
    Par Geronimo dans le forum C++Builder
    Réponses: 14
    Dernier message: 18/06/2002, 14h51
  5. Re-dimensionnement automatique de composants
    Par ludo_7 dans le forum C++Builder
    Réponses: 10
    Dernier message: 16/05/2002, 16h35

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