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



Comment changer la taille de la textbox d'édition de mon datagrid ?
auteurs : neo.51, bodbod
Voici un petit exemple de code :

Dans la page .aspx :

<asp:DataGrid id="MonDatagrid" runat="server" AutoGenerateColumns="False"> <Columns> <asp:TemplateColumn HeaderText="Colonne1"> <ItemTemplate> <#Container.DataItem("nomdemacolonne")> </ItemTemplate> <EditItemTemplate> <asp:Textbox runat="server" width="600" maxlength="600"/> </EditItemTemplate> </asp:TemplateColumn>
dans le code-behind

procedure TWebForm1.MonDatagrid_PreRender(sender: System.Object; e: System.EventArgs); var matextbox : TextBox ; begin if MonDatagrid.EditItemIndex > -1 then begin matextbox := MonDatagrid.Items[MonDatagrid.EditItemIndex].Cells[0].Controls[0] as TextBox ; matextbox.Width := System.Web.UI.WebControls.Unit.Parse('4cm') ; // Unit etant un mot clé dans Delphi, on met sa hierarchie devant // on peut biensur changer d'autre propriétées de la textbox d'édition des données ;-) end ; end ;

Comment changer la couleur d'une cellule d'un datagrid ?
auteurs : neo.51, bodbod
Dans cette exemple on va mettre un fond rouge à toutes les cellules de la 4ème ligne de "Mondatagrid", sachant qu'il comporte 4 colonnes :

procedure TWebForm1.Mondatagrid_ItemDataBound(sender: System.Object; e: System.Web.UI.WebControls.DataGridItemEventArgs); begin if not e.Item.ItemIndex = -1 then begin if e.Item.ItemIndex = 4 then begin e.Item.Cells[0].BackColor := System.Drawing.Color.Red ; e.Item.Cells[1].BackColor := System.Drawing.Color.Red ; e.Item.Cells[2].BackColor := System.Drawing.Color.Red ; e.Item.Cells[3].BackColor := System.Drawing.Color.Red ; end ; end ; end ;

Comment rendre une colonne invisible si AutoGenerateColumns="true" ?
auteurs : neo.51, bodbod
En effet, beaucoup d'entre nous l'ont remarqué, lorsque le datagrid a sa propriété AutoGenerateColumns à "true" le code :

Mondatagrid.columns[1].visible := False ;
NE MARCHE PAS En effet ce code ne marche que si votre datagrid est fait à base de templates columns. Il existe cependant une astuce : dans la page aspx :

<asp:DataGrid id="Mondatagrid" runat="server" AutoGenerateColumns="True" OnItemDataBound="Mondatagrid_OnItemDataBound"/>
dans le code-behind

procedure TWebForm1.Mondatagrid_ItemDataBound(sender: System.Object; e: System.Web.UI.WebControls.DataGridItemEventArgs); begin e.Item.Cells[1].Visible := False ; end ;

Comment adapter la hauteur du datagrid en fonction du nombre de lignes à afficher ?
auteur : neo.51
Cette question va paraître simpliste pour certain, mais en parcourrant notre forum je me suis aperçu qu'on avait été pas mal à se prendre là tête la dessus. Quand on utilise un datagrid avec l'option AutoGenerateColumns="true" on a la hauteur du datagrid qui s'ajuste automatiquement en fonction du nombre de ligne qu'affiche la page.

Par contre, si on décide de spécifier manuellement les colonnes, et donc qu'on met AutoGenerateColumns="false", ce n'est plus la hauteur du datagrid qui s'adapte en fonction du nombre de lignes à afficher mais la hauteurs de lignes qui varie. On peut ainsi se retrouver avec 2 lignes qui prennent toute la largeur du datagrid qui affiche normalement 10 lignes.

La solution à ce problème est ultra simple (encore fallait-il trouver) il suffit juste de ne pas préciser la hauteur (height) du datagrid !!!


Comment ajouter une colonne de webcontrols dans un datagrid ?
auteur : neo.51
Dans cet exemple nous allons ajouter une colonne de boutons : Dans le code de la page aspx :

<Columns> <asp:TemplateColumn> <HeaderStyle Width="600px"></HeaderStyle> <ItemTemplate> <asp:Button id="Button1" runat="server" Text="NotreBouton"></asp:Button> </ItemTemplate> </asp:TemplateColumn> <Columns>
Dans le <itemTemplate> on peut mettre n'importe quel webcontrol. Il y a aussi la balise <EditItemTemplate> dans laquelle on met le webcontrol affiché quand la cellule où se trouve le <iItemTemplate> est en mode édition.

Si vous possédez Visual Studio, il y a encore plus simple : Allez dans le property builder du datagrid => Columns, et changez une boundsColumns en template columns à l'aide d'un lien en bas de la fenêtre. Ensuite du sortez du property builder, faites un click droit sur le datagrid => édit template. Et la vous pouvez éditer la template column avec l'IDE en faisant du Drag & Drop.


Comment n'afficher que l'heure d'une champ type DateTime dans un datagrid ?
auteur : neo.51
Chaque colonne d'un datagrid à une propriété DataFormatString. Pour n'afficher que l'heure d'un champ DateTime la chaîne de caractères à mettre pour la propriété DataFormatString est :
  • {0:HH:mm} : pour afficher les heures (de 0 à 24) et les minutes
  • {0:hh:mm} : pour afficher les heures (de 1 à 12) et le minutes
  • {0:HH:mm:s} : pour afficher les heures (de 0 à 24), les minutes et les secondes


Pour plus d'informations sur les formats personnalisés d'affichage de DateTime voir le site MSDN

lien :  Custom DateTime Format Strings
lien :  Comment formater une date pour l'affichage ?

Comment lier une Css à un Datagrid ?
auteur : neo.51
Le principe est le même pour lier un Datagrid à une Css que pour lier un Calendar à une Css : il faut lier chaque style définissant l'aspect du webcontrol à une classe Css. Pour éviter la redondance d'informations sur cette FAQ je vous renvoie à la question : "Comment lier une Css à un Calendar ?"

lien :  Comment lier un Calendar à une Css ?


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.