Heriarchical DataGridView

Soyez le premier à donner votre avis sur cette source.

Vue 1 008 fois - Téléchargée 149 fois

Description

Bonjour,

Un petit exercice de style à base de datgridview
pour retrouver quelque chose de similaire à la bonne vielle hierachical grid de VB6

Utilisant les nouvelles possibilités du dotnet, notament la classe component
pour créer un composant utilisable dans les projets .Net (VB, C# ,...) de tout type.
Le même projet est disponible en C#.

Cette grille hiérachique permet de visualiser des grilles provenant des requètes
de tables de très grandes tailles,
, en effet seules les données affichées sont chargées,
par défaut, les lignes 'hierachiques' sont repliées (donc non chargées).

Ce controle/class utilisateur est un héritage de Datagridview
avec toutes les options de conceptions activées
(propriétés personnalisées via ComponentModel)
et les ressources (via globalisation) de language activées (ENG/FR).

Cette grille hiérachique (datagridview) est remplie par une requête Sql Maitre
et Une (ou plusieurs) requête(s) SQL de détail (D.S.R.).
L'utilisateur peut étendre ou réduire chaque ligne de la requête SQL (maitre
puis de détail)
sauf celles du dernière détail (D.D.S.R),
en cliquant sur une image d'un dossier inclus dans une colonne (une par D.S.R.).

Les Sql Maitre et détail sont stockées dans les items de la collection 'tables'
elles sont non typées et peuvent être choisies parmis un liste de types de connexion.

Chaque Table hormis D.D.S.R. doit fournir au moins un nom de champ
dans un item de l'item d'index correspondant de la collection 'machtables'
( le ou les champs pivots permettant l'accès au détail de la table d'index +1.
Chaque D.S.R (index) doit avoir au moins un paramètre qui correspond à un nom de champ
(field de macthtable) de la table d'index -1 (moins un).

Lorsque l'utilisateur cliquera pour voir le détail,
les paramètres de la D.S.R. seront remplis par les valeurs des noms de champs pivots
(macthtable) de la ligne à étendre.
La syntaxe des paramètres (? ou @) dans les Sql ,
dépends de la valeur de la propriété provider.

Enfin une Sql optionnelle permet de remplir de façon asynchrone les images des boutons
de la requête maitre (<>0 pour dossier fermé).

Ce controle utilise des datareaders pour extraire sur demande de l'utilisateur
les données, aussi l'usage des propriétes Datasource, DataBinding, Dataadapter,..
est déconseillé.

Le zip comprend une winform d'essais pour permettre d'ajouter ce controle utilisateur
et de faire vos tests ou prise en main.

Bonne utilisation

Codes Sources

A voir également

Ajouter un commentaire

Commentaire

Whismeril
Messages postés
13621
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 août 2019
295 -
Bonsoir,
ce source ne marche pas chez moi, à la première compilation, VS me dit qu'il manque HierGrid1, j'ai donc ajouté un contrôle HierGrid sur le formulaire, et maintenant ça plante à la ligne 907 de HierGrid.vb
command.Connection.Open()

Il semble que tu te sois donné beaucoup de mal à coder ce contrôle, et j'aurais bien voulu le tester, même si
quelque chose de similaire à la bonne vielle hierachical grid de VB6
n'est pas à mon sens un bon principe.

En effet de VB à VB6, les contrôles ont dérivés de "saisie/visualisation" à "source de données", car il n'était pas facile de gérer les données.
En .Net il est très simple de gérer les données, on a une multitude de collection, dataset ou autre pour cela et on peut faire toute sorte de requêtes sur ces sources grâce à linq. Pour faire le lien entre ces sources, ou résultats de requête et les contrôle, il y a le binding. Les contrôles ont donc repris la place qu'ils n'auraient pas dû quitté : la saisie et la visualisation.

De plus .Net n'est plus un peu orienté objet, mais objet voire tout objet. Il est donc conseillé d'écrire une classe qui lit ou écrit la base de données, une classe "métier" qui traites les données et une vue qui binde les données sur l'interface.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.