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

FAQ ASP.NET/VB.NET

logo
Sommaire > Les datagrids > Evènements
        Comment définir la taille d'une colonne de DataGrid?
        Comment passer un argument à la fonction liée à l'événement OnClick d'un bouton?
        Pourquoi dois-je cliquer deux fois pour afficher une autre page de mon DataGrid?
        Comment changer la taille de la textbox d'édition de mon datagrid ?
        Comment changer la couleur d'une cellule d'un datagrid ?
        Comment rendre une colonne invisible si AutoGenerateColumns='true' ?



Comment définir la taille d'une colonne de DataGrid?
auteur : Didier Danse
Dans le code behind dans la méthode liée à l'évènement DataBinding:

					e.Item.Cells(Colonne).Width = New Unit(tailleEnPx)
				
où Colonne et tailleEnPx sont des entiers.


Comment passer un argument à la fonction liée à l'événement OnClick d'un bouton?
auteur : Didier Danse
Il est possible de passer un argument à une fonction liée à l'événement OnClick d'un bouton.

Pour cela, il suffit d'utiliser la propriété CommandArgument. Cette propriété est très utile principalement lorsque l'on souhaite mettre un bouton dans un Repeater, un DataList ou un DataGrid.

					<asp:Button runat=server CommandArgument='<%# DataBinder.Eval(Container.DataItem, "champ") %>' />
				
Dans la fonction liée à l'événement:

					Public Sub Delete(ByVal sender As Object, ByVal e As System.EventArgs)
					Dim bu As Button = CType(sender, Button)
					Dim argument As String = bu.CommandArgument
					End Sub
				

Pourquoi dois-je cliquer deux fois pour afficher une autre page de mon DataGrid?
auteur : Didier Danse
Cela est certainement dû au fait que vous chargez les informations du DataGrid AVANT d'effectuer le changement de page.

Comment cela peut-il arriver? Tout simplement en effectuant un DataBind dans le Page_Load de la page.

Il suffit donc de faire:

					Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
					If Not Me.IsPostBack Then
					' Définition de la source à faire
					dataGrid1.DataBind
					End If
					End Sub

					Private Sub dtgFiltreIndicateurs_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs)
					' Définition de la source à faire
					dataGrid1.CurrentPageIndex = e.NewPageIndex
					dataGrid1.DataBind
					End Sub
				

Comment changer la taille de la textbox d'édition de mon datagrid ?
auteur : David Pedehourcq
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

					Private Sub MonDatagrid_PreRender(s As Object, e As EventArgs)
					If MonDatagrid.EditItemIndex > -1 Then
					Dim matextbox As TextBox
					matextbox= CType(MonDatagrid.Items(MonDatagrid.EditItemIndex).Cells(0).Controls(0), TextBox)
					matextbox.Width = Unit.Parse("4cm")
					'on peut biensur changer d'autre propriétées de la textbox d'édition des données ;-)
					End If
					End Sub

				

Comment changer la couleur d'une cellule d'un datagrid ?
auteur : David Pedehourcq
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 :

					Private Sub Mondatagrid_ItemDataBound(ByVal sender As Object, ByVal e As _
					System.Web.UI.WebControls.DataGridItemEventArgs) Handles Mondatagrid.ItemDataBound
					If Not e.Item.ItemIndex = -1 Then
					If e.Item.ItemIndex=4 Then
					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 If
					End If
					End Sub
				

Comment rendre une colonne invisible si AutoGenerateColumns="true" ?
auteur : David Pedehourcq
En effet, beaucoup d'entre nous l'on 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

					Private Sub Mondatagrid_ItemDataBound(s As Object, e As DatagridItemEventArgs)
					e.Item.Cells(1).Visible = False
					End Sub

				


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.