FAQ ASP.NET/C#Consultez toutes les FAQ

Nombre d'auteurs : 39, nombre de questions : 371, dernière mise à jour : 22 septembre 2007 

 
OuvrirSommaireWebFormsContrôlesGénéral

Dans la procédure de création du bouton on ajoute :

 
Sélectionnez

Bbouton.Click  += new System.EventHandler(MesBoutons_Click);
				



ensuite :

 
Sélectionnez

void MesBoutons_Click(Object sender, System.EventArgs e)
{ 
	//Récupération du bouton ayant déclenché l'événement
	Button  Btn;
	Btn = (Button)sender;
	//Traitement 
}
				



ATTENTION :Lors du postback éffectué aprés l'évènement, le bouton doit impérativement être rechargé dans la page pour que l'évènement soit traité. Quitte à mettre sa propriétée visible à false si vous ne voulez pas qu'il soit visible.

Mis à jour le 23 mai 2005  par Déclic

Quand on appuie sur la touche TAB du clavier, on fait défiler les différents éléments du formulaire en faisant changer le focus d'élément. Mais la plupart du temps, en aspx le défilement des WebControls ne se fait pas dans l'ordre souhaité.
Par défaut, le focus fait défiler les WebControls dans l'ordre dans lequel ils sont déclarés dans la page aspx.
Si vous voulez vous même choisir l'ordre de défilement de vos WebControls, il faut donner une valeur à la propriété "TabIndex" de votre WebControl. Par exemple un WebControl avec un TabIndex=1 sera selectionné au deuxième appui sur la touche TAB.

Créé le 12 octobre 2003  par David Pedehourcq

Cela peut être utilise si l'on a plein d'user contrôles ou de pages imbriquées de pouvoir retrouver un contrôle depuis un autre en fouillant récursivement tous les contrôles de la page.

 
Sélectionnez
 
public static Control RecursiveFindControl(Control controleSource, string idATrouver)
{
    Control control = controleSource.FindControl(idATrouver);
    if (control != null)
        return control;
    for (int i = 0 ; i < controleSource.Controls.Count ; i++)
    {
        control = controleSource.Controls[i].FindControl(idATrouver);
        if (control == null)
        {
            control = RecursiveFindControl(controleSource.Controls[i], idATrouver);
            if (control != null && string.Compare(control.ID, idATrouver, StringComparison.InvariantCultureIgnoreCase) == 0)
                return control;
        }
        else
            return control;
    }
    return control;
}

Attention, utiliser une telle fonction trop tôt dans le cycle de vie de la page, peut appeler prématurément la méthode CreateChildControl sur le contrôle parcouru, ce qui peut avoir des effets indésirables.

Ci-dessous, vous trouverez sa version en itératif, qui améliore les performances :

 
Sélectionnez
 
public static Control IterativeFindControl(Control controleSource, string idATrouver)
{
	Control control = controleSource;
	Queue<Control> queue = new Queue<Control>();
	while (control != null)
	{
		if (string.Compare(control.ID, idATrouver, StringComparison.InvariantCultureIgnoreCase) == 0)
			return control;
		foreach (Control ctrl in control.Controls)
		{
			if (string.Compare(ctrl.ID, idATrouver, StringComparison.InvariantCultureIgnoreCase) == 0)
				return ctrl;
			if (ctrl.HasControls())
				queue.Enqueue(ctrl);
		}
		control = queue.Dequeue();
	}
	return null;
}
Mis à jour le 20 septembre 2009  par nico-pyright(c)

Nous allons ici utiliser un label, mais le code est valable pour les autres WebControls. Le piège dans cette question est que la propriété "font" du label est en lecture seule !!! Il faut en fait passer par un style, un exemple :

 
Sélectionnez

Style monstyle = new Style();

monstyle.BorderColor = Color.Blue;
monstyle.BackColor = Color.Black;
monstyle.ForeColor = Color.Blue;
monstyle.Font.Name="Verdana";
monstyle.Font.Size=20;

Lable1.ApplyStyle(monstyle);
				
Créé le 12 octobre 2003  par leduke

Par défaut, le webuser control a accès à la css de la page dans laquelle il est inclus. L'intérêt est que le webuser control s'adapte parfaitement aux différentes pages dans lesquelles il est placé.

Cependant, si vous souhaitez quand même lier une css "spécifique" à un webuser control, il vous suffit d'ajouter dans la css :

 
Sélectionnez

<LINK rel=stylesheet type="text/css" href="styles.css">
				

attention : si vous liez une css au webuser control faites attention d'utiliser des classes de css différentes que celles de la css des pages dans lesquelles vous allez inclure le webuser control.

Créé le 12 octobre 2003  par David Pedehourcq

Lien : Partie css de la FAQ html

Prenons un exemple concret pour illustrer cette réponse. Ainsi, imaginons que l'on utilise deux User Controls dans une WebPartZone:

 
Sélectionnez

<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.

 
Sélectionnez

<asp:WebPartManager ID="WebPartManager1" runat="server">
	<StaticConnections>
		<asp:WebPartConnection ID="connectionSearch"
				ConsumerID="SearchResults1"
				ProviderID="SearchCriterias1" />
	</StaticConnections>
</asp:WebPartManager>
Créé le 1er février 2006  par Didier Danse

Bien qu'il ne faut pas déclarer l'objet dans son code (je précise: "je n'utilise pas le code-behind"), la raison la plus probable est l'oubli du runat="server" dans la définition de l'objet dans votre page.

Créé le 3 octobre 2005  par Didier Danse

Lorsque l'on utilise la technique du Code-Behind, il faut lier les différents contrôles de la page .aspx avec le code.

Si une NullReferenceException est lancée, cela peut être dû à:
- les noms ne correspondent pas entre la page .aspx et le code-behind
- la variable dans le code est déclarée comme étant privée
- le contrôle n'a pas la propriété runat=server

Créé le 23 mai 2005  par Didier Danse
  

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 et 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.