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



Ma dropdownlist est bien remplie, mais quand je sélectionne un item, c'est toujours la première valeur de la liste qui est retournée
auteurs : neo.51, bodbod
Ce problème est très récurent. Dans 99% des cas le problème vient du postback : Si vous remplissez votre dropdownlist dans le "Page_Load" de votre page, le code correct est :

procedure TWebForm1.Page_Load(sender: System.Object; e: System.EventArgs); begin if not IsPostBack then begin // code pour remplir la dropdownlist end ; end ;
L'erreur fréquemment commise est d'oublier le "If not page.IsPostBack then" quand vous sélectionnez un objet de la dropdownlist, la page se recharge en faisant un postback, donc repasse par le "Page_Load et réinitialise votre dropdownlist. On spécifie donc qu'il ne faut pas réinitialiser la dropdownlist en cas de PostBack et on récupèrera ainsi la valeur sélectionnée.


Comment ajouter dynamiquement des controles à une page ?
auteurs : neo.51, bodbod
Afin de voir comment on ajoute dynamiquement un webcontrol à une page, nous allons prendre un exemple simple : ajouter un label à une page aspx.

Dans la page aspx, on ajoute un PlaceHolder :

<asp:PlaceHolder id="PlaceHolder1" runat="server"></asp:PlaceHolder>
dans le code-behind

procedure TWebForm1.Page_Load(sender: System.Object; e: System.EventArgs); var monlabel : System.Web.UI.WebControls.Label ; begin monlabel := Label.Create() ; PlaceHolder1.controls.add(monlabel) ; end ;
Vous avez là le code minimal pour ajouter un contrôle dynamiquement à une page aspx. Vous pouvez ensuite jouer sur les différentes propriétés et méthodes du webcontrol pour l'initialiser comme vous souhaitez.


Comment créer dynamiquement des métas tags ?
auteurs : neo.51, johngt , bodbod
Nous allons voir dans cet exemple qu'il est très facile de créer dynamiquement des métas tags en ASP.NET dans le head de la page aspx :

<meta http-equiv="Content-Language" id="languagePage" runat="server" /> <meta name="Author" id="auteurPage" runat="server" /> <meta name="Classification" id="classificationPage" runat="server" /> <meta name="Description" id="descriptionPage" runat="server" /> <meta name="keywords" id="keywordsPage" runat="server" />
dans le code-behind on déclare :

Private languagePage : HtmlGenericControl ; auteurPage : HtmlGenericControl ; classificationPage : HtmlGenericControl ; descriptionPage : HtmlGenericControl ; keywordsPage : HtmlGenericControl ;
ensuite pour donner des valeurs aux métas tags :

languagePage := Page.FindControl('languagePage') as HtmlGenericControl ; auteurPage := Page.FindControl('auteurPage') as HtmlGenericControl ; classificationPage := Page.FindControl('classificationPage') as HtmlGenericControl ; descriptionPage := Page.FindControl('descriptionPage') as HtmlGenericControl ; keywordsPage := Page.FindControl('keywordsPage') as HtmlGenericControl ; languagePage.Attributes('content') := 'fr' ; auteurPage.Attributes('content') := 'neo.51' ; classificationPage.Attributes('content') := 'developpement' ; descriptionPage.Attributes('content') := 'FAQ ASP.NET' ; keywordsPage.InnerText := 'asp.net, vb.net, FAQ' ;

Comment changer le font d'un webcontrol en code-behind ?
auteurs : leduke, bodbod
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 :

var monstyle : Style ; monstyle := Style.Create() ; monstyle.BorderColor := Color.Blue ; monstyle.BackColor := Color.Black ; monstyle.ForeColor := Color.Blue ; monstyle.Font.Name := 'Verdana' ; monstyle.Font.Size := 20 ; Lable1.ApplyStyle(monstyle) ;

Comment lier une css à un webuser control ?
auteur : neo.51
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 :

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

lien :  Partie css de la FAQ html

Comment capturer le clic d'un bouton créé dynamiquement ?
auteurs : Déclic, neo.51, bodbod
Dans la procédure de création du bouton on ajoute :

Include(Self.Button1.Click, Self.MesBoutons_Click1) ;


ensuite :

procedure TWebForm1.MesBoutons_Click1(sender: System.Object; e: System.EventArgs); var Btn : Button ; begin Btn := sender as Button ; // Traitement ... end ;


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é visible à false si vous ne voulez pas qu'il soit visible.


Comment créer un bouton qui envoit le formulaire sans qu'il soit validé ?
auteur : neo.51
On crée souvent un bouton "Précédent" ou "réinitialiser" dans ses pages web. Pourtant quand on clique sur ces boutons, les traitements qui lui sont associés doivent s'exécuter, même si le formulaire n'est pas validé par les validators.

Il suffit de mettre dans les propriétés de votre bouton : CausesValidation=false


Comment forcer la saisie en majuscule dans une textbox ?
auteurs : jane2002, bodbod
Dans le Page_Load de la page aspx on ajoute :

TextBox1.Attributes.Add('OnKeyUp','this.value=this.value.toUpperCase()') ;

Comment centrer un texte à l'intérieur d'un label ?
auteurs : neo.51, bodbod
<asp:label id="Labelcentre" Width="100%"> <p align="center">Label centre</p></asp:label>


Ou en code behind :

labelcentre.Text := '<p align="center">Label centre</p>' ;

Comment lier un Calendar à une Css ?
auteur : neo.51
Lorsque l'on passe par le designer de Delphi.NET (et je suppose que c'est sensiblement pareil pour les autres IDE) lorsqu'on paramètre l'aspect de son Calendar, on paramètre en fait plusieurs styles. Par exemple, voici un Calendar ou j'ai personnalisé les styles :

<asp:calendar id="Calendar1" runat="server" Width="47px" Height="40px"> <TodayDayStyle Font-Names="Arial" Font-Bold="True" ForeColor="Red"></TodayDayStyle> <SelectorStyle Font-Names="Arial"></SelectorStyle> <DayStyle Font-Names="Arial" ForeColor="#006600"></DayStyle> <NextPrevStyle Font-Names="Arial" ForeColor="White" BorderColor="#000600" BackColor="#006600"></NextPrevStyle> <DayHeaderStyle Font-Names="Arial" ForeColor="White" BorderColor="#006600" BackColor="#006600"></DayHeaderStyle> <SelectedDayStyle Font-Names="Arial"></SelectedDayStyle> <TitleStyle Font-Names="Arial" ForeColor="White" BorderColor="#006600" BackColor="#006600"></TitleStyle> <WeekendDayStyle Font-Names="Arial"></WeekendDayStyle> <OtherMonthDayStyle Font-Names="Arial" ForeColor="#006600" BorderColor="White" BackColor="White"></OtherMonthDayStyle> </asp:calendar>

Le soucis est que si votre application utilise plusieurs Calendar il faut soit faire du copier coller soit recréer tous les styles. On peut pourtant lier le Calendar à une Css. Plus exactement on peu lier chaque style à une classe Css. Par exemple, juste pour le DayHeaderStyle :
On déclare le calendar :

<asp:calendar id="Calendar1" runat="server" Width="47px" Height="40px"> <DayHeaderStyle CssClass="MyDayHeaderStyle"></DayHeaderStyle> </asp:calendar>

Dans votre Css :

.MyDayHeaderStyle { background-color:#006600; /* BackColor */ border-color:#006600; /* BorderColor */ color:White; /* ForeColor */ font-family:Arial; /* Font */ }


On fait de même avec tous les autres styles du Calendar.

ATTENTION : L'objet calendar a un comportement étrange lorsqu'on applique une Css sur des liens (les jours, mois suivant, mois précédent). Afin de s'assurer que les liens du calendar respectent la Css, il faut spécifier une règle sur la Css, par exemple :

TD.OtherMonthDayStyle A { font-family : Arial ! important; color:#006600 ! important; }

Les styles affectés par ce comportement étrange du calendar et nécessitants ce type de classe Css sont :
  • OtherMonthDayStyle
  • TodayStyle
  • NextPrevStyle


Comment formater une date pour l'affichage ?
auteurs : neo.51, bodbod
Rien de tel qu'un exemple concret pour voir comment formater une date pour l'affichage :

var dt : DateTime ; dt = DateTime.Create(1978,5,18) ; dt.ToString(param) ;
Voici les différents résultats que l'on obtient suivant la valeur de param :
  • "d" : 18/5/1978"
  • "D" : "jeudi 15 mai 1978"
  • "f" : "jeudi 15 mai 1978 08:05"
  • "F" : "jeudi 15 mai 1978 08:05:01"
  • "g" : "18/5/1978 08:05"
  • "G" : "18/5/1978 08:05:01"
  • "M" : "18 mai"
  • "R" : Date GMT en anglais --> Thu, 14 may 1978 09:05:01 GMT
  • "s" : Date pour les tris --> 1978-05-18T09:05:01
  • "t" : "08:05"
  • "T" : "08:05:01"
  • "u" : même chose que s mais en temp GMT


Et pour les formats personnalisés:
  • d : jour 1 à 31
  • dd : jour 01 à 31.
  • ddd : abr d'un jour ex: sam. pour samedi
  • dddd : nom complet du jour
  • M : mois 1 à 12
  • MM : mois 01 à 12
  • MMM : abr d'un moi ax:jan. pour janvier
  • MMMM : nom complet du mois
  • y : année 1 à 99
  • yy : année 01 à 99
  • yyy : année 1 à 9999
  • h : heure 0 à 11
  • hh : heure 00 à 11
  • H : heure 0 à 23
  • HH : heure 00 à 23
  • m : minutte 0 à 59
  • mm : minutte 00 à 59
  • s : seconde 0 à 59
  • ss : seconde 00 à 59

dt.ToString('dddd, le d MM yyyy') ;
Donnera : Jeudi, le 18 05 1978

lien :  Comment n'afficher que l'heure d'une champ type DateTime dans un datagrid ?


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 © 2004 Developpez 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.