Meta Ctrl_XtraGrid
Retour
Comment initialiser et utiliser un Meta_GridView, c'est ce que nous allons voir ici
Introduction
Le Ctrl_XtraGrid est un contrôle permettant d'afficher des données sous la forme d'un tableau.
C'est l'un des éléments les plus utilisées.
En voici un apperçu :
Utilisation du Ctrl_XtraGrid
- Partie Designer
- Déposez via le designer VisualStudio un controle Ctrl_GridBarreOutils
- Déposez via le designer VisualStudio un controle Ctrl_XtraGrid
- Partie Code
Initialisation
Il est maintenant nécessaire d'initialiser le Ctrl_XtraGrid(GridView) avec les informations de la base de données.
Il est aussi important de d'initialiser le Ctrl_GridBarreOutils afin de la lier au tableau.
Voici comment faire :
'L'initialisation se fait dans la fonction : Public Overridable Function Initialiser
Public Overridable Function Initialiser(ByRef CnxBDD_P As Metaproductique.Kmprod.C_SGBD, ByVal Droits_P As Metaproductique.Kmprod.C_Droits, ByVal Parametre_P As String, ByVal Master_P As Object) As Boolean
Try
Ctrl_XtraGrid1.Initialiser(CnxBDD_P, Droits_P, System.Reflection.Assembly.GetCallingAssembly().GetName.Name + "_" + Me.GetType().Name.ToString, Ctrl_XtraGrid1.Name)
Return True
Catch ex As Exception
Return False
End Try
End Function
Chargement des données
Maintenant que le Ctrl_XtraGrid est initialisé, il ne reste plus qu'a lui transmettre un jeu de données à afficher.
Voici comment faire :
'Le chargement se fait dans la fonction : Public Overridable Function Charger
Public Overridable Function Charger() As Boolean
Try
'L'information sur la requête SQL est disponible lors d'un contrôle : ctrl + clique souris bouton droit
Ctrl_XtraGrid1.Charger(GridDataTable_c, "Requête SQL permettant de récupérer les données affichées")
'Il y a également une autre façon de charger les données, mais il est conseillé d'utiliser celle du dessus pour les nouveaux développments (lorsqu'elle fonctionne)
'With Ctrl_XtraGrid1
' .Requete = "Requête SQL permettant de récupérer les données affichées"
' If GridDataTable_c IsNot Nothing Then
' .DataSource = GridDataTable_c
' End If
'End With
'Permet de charger l'apparence du tableau en BDD
Ctrl_GridBarreOutils1.Initialiser(Ctrl_XtraGrid1)
Return True
Catch ex As Exception
Meta.Meta_MessageBox.C_MessageBox.Show("Erreur lors de l'affichage : " & ex.Message, "Erreur", Nothing, MessageBoxButtons.OK)
Return False
End Try
End Function
Pour aller plus loins
Définition du style des colonnes
Avec le nouveau système de metaproductique, une partie de la configuration des colonnes peut être faite avec un ctrl + clique droit sur le Ctrl_XtraGrid
Il peut également y avoir des conflits entre la configuration côté code et celle faite via la GUI (une configuration va prendre le dessus sur l'autre).
Définition du style dans le code .NET
Voici un exemple de code commenté illustrant la façon de définir le style des colonnes :
Public Overridable Function Charger(ByVal MA_ID_p As String, ByVal DT_DEBUT_p As Date, ByVal DT_FIN_p As Date) As Boolean
Try
'Chargement du GridView
With Ctrl_XtraGridView1
.Requete = DAL_V_SYNTHESE_EVENEMENTS_c.LastRequete
If ListeBEL_V_SYNTHESE_EVENEMENTS_c IsNot Nothing Then
.DataSource = ListeBEL_V_SYNTHESE_EVENEMENTS_c
End If
End With
'Initialisation des colonnes
Dim ListeColonnes_l As New List(Of Meta_DevExpress.C_XtraGrid_Colonne)
InitialiserColonnes(ListeColonnes_l)
#Region "InitGridView"
'On applique le style définit à chaque colonne du tableau
For Each ColListe_F As Meta_DevExpress.C_XtraGrid_Colonne In ListeColonnes_l
For Each Col_F As DevExpress.XtraGrid.Columns.GridColumn In Meta_GridView1.Columns
If Col_F.Tag Is Nothing Then
Col_F.OptionsColumn.AllowEdit = False
'Permet d'aligner le titre de la colonne
Col_F.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center
If Col_F.Name = ColListe_F.Name Then
Col_F.Visible = ColListe_F.Visible
Col_F.VisibleIndex = ColListe_F.Displayindex
Col_F.Caption = ColListe_F.HeaderText
Col_F.ColumnEditName = ColListe_F.Name
Col_F.Width = ColListe_F.Width
Col_F.Tag = "DONE"
Else
'On cache les colonnes que l'on ne souhaite pas afficher
Col_F.Visible = False
Col_F.VisibleIndex = -1
End If
End If
Next
Next
#End Region
'Fin initialisation
Ctrl_GridBarreOutils1.Initialiser(Ctrl_XtraGridView1)
Catch ex As Exception
Meta.Meta_MessageBox.C_MessageBox.Show("Erreur lors du chargement : " & ex.Message, "Erreur", Nothing, MessageBoxButtons.OK)
End Try
Return True
End Function
Private Sub InitialiserColonnes(Colonnes_P As List(Of Meta_DevExpress.C_XtraGrid_Colonne))
Dim Col_L As Meta_DevExpress.C_XtraGrid_Colonne, colNum_l As Integer = 0
Col_L = New Meta_DevExpress.C_XtraGrid_Colonne : colNum_l += 1
With Col_L
.Displayindex = colNum_l
.Name = "colTR_LIBELLE" 'col + Nom de la colonne dans la base de données
.Visible = True
.HeaderText = "Titre à afficher"
.Width = 75
.Format_Colonne = Meta_DevExpress.C_XtraGrid_Colonne.Enum_Format_Colonne.Aucun
End With
Colonnes_P.Add(Col_L)
Col_L = New Meta_DevExpress.C_XtraGrid_Colonne : colNum_l += 1
With Col_L
.Displayindex = colNum_l
.Name = "colRE_LIBELLE" 'col + Nom de la colonne dans la base de données
.Visible = True
.HeaderText = "Titre à afficher"
.Width = 75
.Format_Colonne = Meta_DevExpress.C_XtraGrid_Colonne.Enum_Format_Colonne.Aucun
End With
Colonnes_P.Add(Col_L)
End Sub
Il est important d'initialiser le Ctrl_GridBarreOutils après avoir appliqué le style définit à chaque colonne du tableau.
Définition du style via la GUI
Pour faire apparaître la fenêtre de personalisation : faire un ctrl + clique droit sur le Ctrl_XtraGrid.
Une fenêtre comme celle-ci va s'ouvre :
Les onglets qui nous intéressent sont :
- L'onglet "Gestion colonnes"
- L'onglet "Mise en page"
On remarquera également la présence d'informations qui peuvent aider pour le processus de débogage.
Comme la requête SQL qui est éxécutée afin de récupérer les données à afficher.
L'onglet "Gestion colonnes"
Cet onglet permet de renommer le titre des colonnes (Colonne "Titre"), ainsi que de définir le format d'affichage des données (Colonne "Type").
Bien penser à enregistrer les changements.
Les configurations des tableaux sont présentes dans la table MO_DEVX_PERSONNALISATION qui se situe dans la base KM.
L'onglet "Mise en page"
Cet onglet permet de sauvegarder l'apparence du tableau en le liant avec un nom de profil. Si ce profil éxiste, il est écrasé par le nouveau, sinon il est créé. Voici les propriétés sauvegardées avec cet onglet :
- L'ordre des colonnes
- La largeur des colonnes
- Tout tri appliqués sur les colonnes
- Sûrement d'autres choses ...
Gérer certains événement
L'événement "CustomDrawCell"
Cet événement permet de définir la façon dont va être affiché la données au run time.
Voici comment procéder :
Private Sub GridView1_CustomDrawCell(sender As Object, e As DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs) Handles Meta_GridView1.CustomDrawCell
'Définition de l'affichage de la date au run time'
Select Case e.Column.Name
Case "colHE_DATEDEBUT"
e.DisplayText = CDate(e.CellValue).ToString("dd/MM/yyyy HH:mm")
Case "colHE_DATEFIN"
e.DisplayText = CDate(e.CellValue).ToString("dd/MM/yyyy HH:mm")
Case "colHE_DUREE"
Dim tp_l As New TimeSpan(0, 0, CInt(e.CellValue))
e.DisplayText = tp_l.Minutes.ToString + ":" + tp_l.Seconds.ToString + " minutes"
End Select
End Sub
C'est également avec cet événement qu'il est par exemple possible de définir la couleur de fond de la cellule en fonction de la valeur de la donnée qui est contenue par exemple.
Libre à vous de faire ce que vous voulez.