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 :

Récupérer un Event avec le Init


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 250
    Par défaut Récupérer un Event avec le Init
    Bonjour,
    ca fait 2 jours que je galère sur ce problème, alors gloire à celui qui trouve comme m'aider

    Dans ma page Default, j'ai un usercontrol UCMenu, qui contient, un MENU !

    Lorsque je click sur mon menu, ce UC lève un event récupéré par Default, qui va charger un autre usercontrol UCContent en fonction du choix de l'utilisateur.

    Le problème c'est que le OnInit de UCContent, passera avant de savoir le choix de SelectionChanged de mon Menu, puisque les évènements sont apparement gérés après le Init ...

    Pourquoi j'ai besoin du Init de UCContent ? Car il contient un autre usercontrol UCGrid, qui contient une gridview. Et lors d'un selectedItem sur cette dernière, si je n'ai pas fais l'initialisation de UCGrid dans l'Init de UCContent => bug. Car comme il est chargé dynamiquement il ne le retrouve pas dans les Controls de UCContent


    J'espère que mon explication est assez claire

    Donc mes question :
    1) Comment faire pour récupérer mon OnSelectionChange du menu avant l'Init du UCContent ?
    2) Ya t'il une autre solution ? Plus propre ? Plus best Practices ? Qui marche ?


    Merci d'avance

  2. #2
    Membre très actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 250
    Par défaut
    Salut,
    non c'est pas clair ce que tu dis

    Je te conseille dans le Page_Load de UCContent, rappeler ton Page_Init, de faire un findControl de UCGrid, et de faire ton binding si besoin !

  3. #3
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2011
    Messages : 89
    Par défaut
    dans le fichier .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
    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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    public partial class UserControls_ucVerticalMenu : System.Web.UI.UserControl
    {
        #region "Membres privs"
        private XmlDocument _objXmlDoc;
        #endregion
     
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                string strNomFichierXML;
                XmlDocument objXmlDocTemp = new XmlDocument();
                /*--------------------------
                 * Chargement du menu complet
                 * --------------------------*/
                strNomFichierXML = Application["cheminMenu"].ToString() + Application["MenuXML"];
                objXmlDocTemp.Load(this.Page.Server.MapPath(strNomFichierXML));
     
                /*--------------------------------------
                 * Construction du menu en fonction 
                 * du profil de l'utilisateur courant
                 * --------------------------------------*/
                _objXmlDoc = new XmlDocument();
                XmlNode objNode;
                objNode = GetMenu(objXmlDocTemp.ChildNodes[2]);
                objNode = GetAutorizedMenu(objNode);
                if (objNode != null)
                    _objXmlDoc.AppendChild(_objXmlDoc.ImportNode(objNode, true));
     
                if (Session["selectedMenuId"] != null)
                    PageScrollingMenu1.SelectedId = Session["selectedMenuId"].ToString();
                PageScrollingMenu1.MenuDataXML = _objXmlDoc;
            }
            catch (Exception)
            {
            }
        }
     
        #region "Methodes Prives"
        private XmlNode GetMenu(XmlNode objXmlNode)
        {
            //XmlNode objNode;
            XmlNodeList objNodes;
            XmlNode objNodeChild;
            int i, intMax;
     
            //Rcupration sous-menu <root>
            string strPath;
            strPath = "root";
            objNodes = objXmlNode.SelectNodes(strPath);
            foreach (XmlNode objNode in objNodes)
            {
                intMax = objNode.ChildNodes.Count - 1;
                i = 0;
                while (i <= intMax)
                {
                    objNodeChild = objNode.ChildNodes[i].Clone();
                    objXmlNode.AppendChild(objNodeChild);
                    i++;
                }
                objXmlNode.RemoveChild(objNode);
            }
            return objXmlNode;
        }
     
        private void InitializeComponent()
        {
     
        }
     
        private XmlNode GetAutorizedMenu(XmlNode objXmlNode)
        {
            XmlNode objNode;
            bool booAuthorized;
            int i = 0;
            int iLast = 0;
            int iMax = objXmlNode.ChildNodes.Count - 1;
            string delimStr = ";";
            char[] delimiter = delimStr.ToCharArray();
            while (i <= iMax)
            {
                booAuthorized = false;
                objNode = objXmlNode.ChildNodes[iLast];
                if (objNode != null)
                {
                    if (objNode.Attributes != null)
                    {
                        if (objNode.Attributes["profil"] != null)
                        {
                            /*string strRole = objNode.Attributes["profil"].Value;
                            string strPhase = objNode.Attributes["phase"].Value;
                            if (Session["ProfilUtilisateur"].ToString().Equals(strRole) &&
                                Session["Phase"].ToString().Equals(strPhase))*/
                                booAuthorized = true;
                        }
                        else booAuthorized = true;
                    }
                    else booAuthorized = false;
     
                    if (!booAuthorized)
                        objXmlNode.RemoveChild(objNode);
                    else
                    {
                        iLast += 1;
                        objXmlNode.ReplaceChild(GetAutorizedMenu(objNode), objNode);
                    }
                }
                i++;
            }
            return objXmlNode;
        }
        #endregion
    }
    dans le ascx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="ucVerticalMenu.ascx.cs" Inherits="UserControls_ucVerticalMenu" %>
    <%@ Register TagPrefix="cc1" Namespace="SDIS.Intranet.UI" Assembly="SDIS.Intranet.UI" %>
    <table id="table1" style="MARGIN-TOP: 0px; MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px;" cellspacing="0"
    	cellpadding="0" border="0" width="200px">
    	<tr valign="top">
    		<td valign="top" class="td"><cc1:pagescrollingmenu id="PageScrollingMenu1" HighlightColor="White"
    				ShadowColor="Transparent" SelectedForeColor="White"
    				Display="Vertical" IconBackgroundColor="White" Font-Bold="True" IconWidth="1" MenuBarHeight="135"
    				SystemScriptPath="/" SystemImagesPath="/" ForeColor="White" Font-Size="XX-Small"
    				Font-Names="Verdana" BackColor="White" runat="server" SubMenuColor="#EFF2FB" SelectedBorderColor="#EFF2FB" EnableViewState="False"></cc1:pagescrollingmenu></td>
    	</tr>
    </table>
    Ceci marche chez moi... en esperant que cela puisse t'inspirer toi ou un autre...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/02/2006, 15h31
  2. Newbie en XML: récupérer le contenu avec de l'ASP
    Par yoda_style dans le forum ASP
    Réponses: 3
    Dernier message: 13/01/2006, 11h46
  3. [Tkinter] Un petit souçis d'event avec Tkinter
    Par fire.stone dans le forum Tkinter
    Réponses: 4
    Dernier message: 29/10/2005, 20h56
  4. [VB.NET] [ODBC] Récupérer des valeurs avec requête ODBC?
    Par Pleymo dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/03/2005, 16h38
  5. Réponses: 2
    Dernier message: 29/03/2004, 13h44

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