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

FAQ ASP.NET/VB.NET

logo
Sommaire > Les webforms en .NET 2.0
        Comment changer de MasterPage dynamiquement?
        Comment permettre à deux webparts d'échanger des informations?
        Comment changer dynamiquement le thème d'une page?
        Où placer le ScriptManager ?
        Comment permettre l'imbrication de Master Page ?
        Faut-il préférer un Panel ou un PlaceHolder ?
        Comment modifier le contenu d'un contrôle d'une MasterPage depuis une Content Page ?
        Comment spécifier, de manière globale, le thème d'un site ?
        Quel est le cycle de vie d'une page ?
        7.1. Ajax (2)
                Je fais un drag and drop des composants ASP.NET AJAX et je reçois une erreur ' Sys is undefined ' au chargement de la page, pourquoi ?
                Comment éviter que le panel lié à un modal popup extender ne soit visible pendant le chargement de la page?



Comment changer de MasterPage dynamiquement?
auteur : Didier Danse
Il y a plusieurs manières de définir la Master Page à utiliser. Une des techniques est de la définir dans le Page_PreInit:

					
Me.MasterPageFile = "mpPath\mpFile.master"

				
Ainsi, cette valeur "surchargera" celle définie dans l'entête de la page web.


Comment permettre à deux webparts d'échanger des informations?
auteur : Didier Danse
Prenons un exemple concret pour illustrer cette réponse. Ainsi, imaginons que l'on utilise deux User Controls dans une WebPartZone:

					
<asp:WebPartZone ID="wpzGauche" runat="server" BorderColor="#CCCCCC" Font-Names="Verdana" Padding="6" Width="100%">
<ZoneTemplate>
    <uc1:searchResults ID="SearchResults1" runat="server" />
    <uc1:searchCriterias ID="SearchCriterias1" runat="server" />
</ZoneTemplate>
</asp:WebPartZone>

				
Ensuite, il suffit d'ajouter un WebPartManager et de définir une connexion statique. Cette connexion prendra comme paramètres les ID du U.C. producteur et celui du consommateur. Ainsi, lors de l'envoi d'une information par le producteur, le consommateur est averti et peut utiliser cette même information.

					
<asp:WebPartManager ID="WebPartManager1" runat="server">
  <StaticConnections>
    <asp:WebPartConnection ID="connectionSearch"
      ConsumerID="SearchResults1" 
      ProviderID="SearchCriterias1" />
  </StaticConnections>  
</asp:WebPartManager>

				

Comment changer dynamiquement le thème d'une page?
auteur : Ronald Vasseur
Vous pouvez bien évidemment définir « en dur » le thème d'une page ASP.Net 2.0, mais il est possible et très utile de faire cela dynamiquement depuis votre code. Le thème est déterminé lors de l'évènement PreInit de la page, qui est en fait le tout premier évènement de la page. Il faut donc signaler lors de cet évènement le thème à utiliser, voici le code nécessaire à cette action :

					
Protected Sub Page_PreInit(sender as Object, e as EventArgs)
Page.Theme = Page.Request("monTheme")
End Sub

				
Vous voyez que le code est très simple, il suffit de passer le nom du thème désiré à la propriété Theme de votre page, ici nous le récupérons (grâce à Page.Request()) dans l'URL de la page où il a été passé en paramètre.


Où placer le ScriptManager ?
auteur : Didier Danse
Vous pouvez placer votre ScriptManager à n'importe quel niveau, cependant afin de vous faciliter le tout, placez le dans la Master Page.
Dès lors, si vous désirez modifier le comportement de votre ScriptManager pour une page (ContentPage) particulière, vous pouvez utiliser le ScriptManagerProxy.

Notez également que vous avez la possibilité de mettre le ScriptManager dans chacune des Content Pages.


Comment permettre l'imbrication de Master Page ?
auteur : Didier Danse
Bien que Visual Studio 2005 ne le permette pas en mode design, l'imbrication de Master Page est prévue dans le framework.
Effectivement, l'élément permettant de définir quelle est la master page est MasterPageFile="~/masterpage.master" dans la directive "Page".
Cela donnera donc :

					 
<%@ Page Language="C#" MasterPageFile="~/masterpage.master" AutoEventWireup="true" 
	CodeFile="default.aspx.cs" Inherits="_default" Title="Untitled Page" %>

				
Dès lors, il ne vous reste plus qu'à définir cette propriété au sein de votre master page et vous voilà avec des master pages imbriquées, très utiles pour faciliter la mise en page dans vos applications.


Faut-il préférer un Panel ou un PlaceHolder ?
auteur : Didier Danse
Le Panel possède différentes propriétés de mise en forme qui n'existent pas dans le PlaceHolder. Dès lors, si vous souhaitez mettre en forme votre Panel, préférez-le au PlaceHolder. A l'inverse, si vous devez uniquement placer des éléments dans une zone, utilisez le PlaceHolder qui est légèrement plus rapide (de l'ordre du millième de seconde).


Comment modifier le contenu d'un contrôle d'une MasterPage depuis une Content Page ?
auteur : Didier Danse
Dans vos pages, vous avez accès à une propriété nommée Master. Celle-ci comporte, comme pour toutes les pages, une méthode FindControl à laquelle vous pouvez passer le nom du contrôle. Il ne vous reste plus qu'à le caster (sans quoi vous récupérerez un object). Il ne vous reste plus qu'à le modifier.

					 
Dim la As Label
la = CType(Master.FindControl("laDansMasterPage"), Label)
la.Text = "un titre par exemple"

				

Comment spécifier, de manière globale, le thème d'un site ?
auteur : Didier Danse
ASP.NET permet de configurer pas mal d'éléments directement dans le web.config. C'est également le cas pour le thème. Pour le définir au niveau global de votre application, utilisez :

					 
<system.web>
	<pages theme="theme"/>
</system.web>

				

Quel est le cycle de vie d'une page ?
auteur : nico-pyright(c)
Le framework ASP.NET propose un modèle évolué, qui se rapproche d'un modèle événementiel comme le sont les applications client-lourd (comme les Winforms) et permettant de conserver l'état d'une page.
Ainsi, dans cette approche axée sur un modèle événementiel, notre page va passer par un certain nombre d'étapes. C'est ce qu'on appelle le cycle de vie, voici les principales étapes du cycle de vie d'une page :

Initialisation d'une page par le framework ASP.NET :

Evénement Description et actions associées
FrameworkInitialize Initialise l'arbre des contrôles, basé sur l'aspx.
DeterminePostbackMode Détermine si on est dans un PostBack et affecte la variable IsPostBack. Charge également les données GET et POST. Une fois cet événement passé, on peut utiliser Request.Form.
PreInit Evénement valable uniquement pour une page. A ce moment là, les propriétés mise en design dans l'aspx sont déjà initialisées. C'est l'endroit idéal pour créer des contrôles dynamiquement.
Init Dans cet événement, on peut également lire les propriétés mise en design, mais on ne peut pas récupérer leurs valeurs si elles ont été modifiées par l'utilisateur lors d'un post back ; ce ne sera possible qu'après LoadPostData(). Ces valeurs seront tout de même accessibles grâce à l'objet Request. Attention, ASP.NET commence par lever les événements OnInit des UserControls récursivement et ensuite lève l'événement de la Page.
TrackViewState Démarre la surveillance des modifications de l'état d'affichage des contrôles
InitComplete Evénement valable uniquement pour la page. On s'en sert pour des opérations qui nécessitent que tous les éléments soient initialisés.
LoadViewState Si la page est en post back (IsPostBack == true), ASP.NET déserialize les informations du view state et les appliques aux contrôles.
LoadPostBackData Evénement levé uniquement si IsPostBack == true. ASP.NET renseigne les contrôles avec leurs valeurs grâce au POST DATA.

Initialisation par le code utilisateur :

Evénement Description et actions associées
PreLoad Evénement valable uniquement pour la page, à utiliser avant le chargement récursif de tous les contrôles.
OnLoad Appelle récursivement OnLoad sur les contrôles enfants. C'est l'endroit idéal pour les databinds. Attention, cette fois-ci ASP.NET commence par le onload de la page et ensuite ceux des usercontrols récursivement.

Validation, événements et fin de chargement

Evénement Description et actions associées
Validation Ici, les méthodes serveurs des validateurs sont appelées.
Evénement des contrôles ASP.NET va lever les événements associés à des contrôles : OnClick, OnSelectedIndexChanged, etc ...
LoadComplete Evénement valable uniquement pour la page. On s'en sert pour des actions qui nécessitent que tous les contrôles soient chargés.

Rendu :

Evénement Description et actions associées
PreRender Avant cet événement, la page appelle EnsureChildControls. A utiliser avant que le contrôle ou la page ne soit définitivement figé.
SaveStateComplete Arrive au moment de l'enregistrement du viewState, si on modifie un contrôle après cet événement, ce ne sera pas pris en compte.
Render Méthode qui effectue le rendu de chaque contrôle.

Déchargement :

Evénement Description et actions associées
Unload Cet événement est utilisé pour libérer les ressources.


Consultez les autres F.A.Q's


Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007 Dotnet Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.