TABLEMODEL en c#

TABLEMODEL en c# - C#/.NET managed - Programmation

Marsh Posté le 29-03-2005 à 11:43:52    

Bonjour à tous,
 
Venant du monde Java et utilisant SWING, je cherche un équivalent au Tablemodel/Jtable pour une Datagrid ou composant grille équivalent.
 
Je trouve le data binding des datagrids peu objet contrairement aux TableModel éxistant en SWING ou l'on crée soit même le mapping.
 
Auriez vous des conseils à me donner ? Peut être n'aie-je pas compris la manière de fonctionner mais pour ma part je trouve laid le fait de mapper directement une vue base de données sur un objet GUI via un Dataset ou autre.
 
Je cherche donc une sous couche (KLOUG) permettant de s'interfacer avec la couche GUI.
 
Je vous remercie d'avance.

Reply

Marsh Posté le 29-03-2005 à 11:43:52   

Reply

Marsh Posté le 29-03-2005 à 12:25:58    

Dans un DataGrid, tu lui balance un truc qui implémente l'interface IList ou IListSource, et ça lui plaira :) Et sinon le contrôle est entièrement conigurable comme c'est pas possible, voit dans la MSDN ;)

Reply

Marsh Posté le 29-03-2005 à 12:32:01    

FlorentG a écrit :

Dans un DataGrid, tu lui balance un truc qui implémente l'interface IList ou IListSource, et ça lui plaira :) Et sinon le contrôle est entièrement conigurable comme c'est pas possible, voit dans la MSDN ;)


 
Merci.
J'y avais pensé effectivement en regardant la msdn, cependant le peu d'information sur l'implémentation de ces interfaces m'ont découragé.
 
N'aurais tu pas un exemple s'il te plait ?
 
Merci encore,
 
++

Reply

Marsh Posté le 29-03-2005 à 12:32:48    

C'est quoi que tu veux faire exactement ? Quel gueule aura le truc intermédiaire ? :)

Reply

Marsh Posté le 29-03-2005 à 13:35:41    

FlorentG a écrit :

C'est quoi que tu veux faire exactement ? Quel gueule aura le truc intermédiaire ? :)


 
En gros,
j'aimerais gèrer une collection d'objets métiers dans cette couche qui aurait des methodes similaires aux TableModel java, par exemple :
- Type getColumnType()
- int getColumnCount()
- String getColumnName(int column)
- Object getValueAt(int rowIndex, int columnIndex)
 
Merci de ton aide.

Reply

Marsh Posté le 29-03-2005 à 14:19:04    

Ah oui, j'me rappelle vaguement de tout ça... Comme dit, on peut faire moutlt chose avec le DataGrid. Genre mettre une ListBox dans une case, choisir un nom de colonne, etc...

Reply

Marsh Posté le 29-03-2005 à 14:33:35    

FlorentG a écrit :

Ah oui, j'me rappelle vaguement de tout ça... Comme dit, on peut faire moutlt chose avec le DataGrid. Genre mettre une ListBox dans une case, choisir un nom de colonne, etc...


 
Ton message est justement la chose que j'aimerais éviter :
 - Le GUI ne doit s'occuper que d'afficher génériquement des objets
 - Le fait d'avoir une listbox dans une case n'est juste qu'un problème de rendu et n'a pas grand chose à voir avec ma demande.
 
Ce n'est pas un problème de rendu mais juste de séparation des couches. J'aimerais un objet (implémentant certainement IList) possèdant le genre de méthodes citées plus haut dans le but de bien séparer les couches et que mon GUI (une datagrid par exemple) ne soit pas en lien direct avec ma base de données mais plutôt avec cette couche contenant une collection d'objets métiers.
 
Voilà.

Reply

Marsh Posté le 29-03-2005 à 14:40:49    

Mouais :/ Personnellement, j'utiliserais un DataView... Faut pas vouloir trop séparer ;) Sinon tu risques de te faire bien chier pour répercuter les mises à jour vers la BD :D

Reply

Marsh Posté le 29-03-2005 à 14:44:41    

FlorentG a écrit :

Mouais :/ Personnellement, j'utiliserais un DataView... Faut pas vouloir trop séparer ;) Sinon tu risques de te faire bien chier pour répercuter les mises à jour vers la BD :D


 
Le fait de vouloir séparer ton GUI de ta base de données est quand même beaucoup plus propre.
C'est beaucoup plus évident de travailler avec de vrais objets métiers plutôt que de laisser gèrer ton GUI derrière.

Reply

Marsh Posté le 29-03-2005 à 14:47:53    

Ca dépend. Le DataView est par exemple prévu justement pour être entre ta BD et ta GUI.

Reply

Marsh Posté le 29-03-2005 à 14:47:53   

Reply

Marsh Posté le 29-03-2005 à 16:14:25    

FlorentG a écrit :

Ca dépend. Le DataView est par exemple prévu justement pour être entre ta BD et ta GUI.


 
C'est très moche en tout cas, d'autant plus que tu ne maîtrises rien et que pour des schémas un peu complexe comme j'ai le cas actuellement (imbrication d'objets métiers les uns dans les autres par exemple), tout tombe à l'eau. Lorsque je sélectionne un élément dans la datagrid, je veux pouvoir travailler sur un objet métier (type Client par exemple). Avec une dataview tu es obligé de refaire le binding objet, n'est ce pas M
 
Je veux juste savoir si quelqu'un a déjà essayé d'implémenter cette couche IList ou IListSource et s'il est possible de me donner un exemple.
 
Merci d'avance.

Reply

Marsh Posté le 29-03-2005 à 16:16:44    

Aurait-tu un peu plus de détails sur la tronche de ta BD ?

Reply

Marsh Posté le 29-03-2005 à 16:26:30    

FlorentG a écrit :

Aurait-tu un peu plus de détails sur la tronche de ta BD ?


Là n'est pas le problème, je te remercie de t'intéresser à la problématique :)
 
Ayant l'habitude de travailler avec des TableModel en Java et trouvant qu'il est beaucoup plus confortable de jouer avec des objets, je veux juste savoir s'il éxiste l'équivalent (à priori oui) et comment l'implémenter.
 
Merci.

Reply

Marsh Posté le 29-03-2005 à 16:41:11    

En fait le problème c'est que j'avais utilisé des TableModel en Java, mais y'a 3 ans, alors j'me rappelle plus :D

Reply

Marsh Posté le 29-03-2005 à 16:43:26    

FlorentG a écrit :

En fait le problème c'est que j'avais utilisé des TableModel en Java, mais y'a 3 ans, alors j'me rappelle plus :D


:lol:
Si qqun d'autre peut m'aider


Message édité par axxxelfoley le 29-03-2005 à 16:44:00
Reply

Marsh Posté le 29-03-2005 à 16:45:21    

Donc en gros, si j'me rappelle bien, TableModel permet de renseigner sur le type de colonne, son nom, le nombre de colonnes dans l'objet, et de récupérer la valeur d'une case ?

Reply

Marsh Posté le 29-03-2005 à 16:49:29    

FlorentG a écrit :

Donc en gros, si j'me rappelle bien, TableModel permet de renseigner sur le type de colonne, son nom, le nombre de colonnes dans l'objet, et de récupérer la valeur d'une case ?


 
C'est vite résumé mais cela fait partie effectivement de ses fonctions. Il permet de mieux gèrer et manipuler les collections d'objets. Quand on parle de Type, c'est le Type de la données et non le Type de sa représentation graphique (qui en Java est effectué par un Renderer).
 

Reply

Marsh Posté le 29-03-2005 à 16:50:34    

Ok je vois. Ben je soutient encore l'utilisation de Dataset/table/view, vu qu'ils sont prévus pour ça (et ne sont pas directement liés à la BD physique) :D

Reply

Marsh Posté le 29-03-2005 à 16:54:08    

FlorentG a écrit :

Ok je vois. Ben je soutient encore l'utilisation de Dataset/table/view, vu qu'ils sont prévus pour ça (et ne sont pas directement liés à la BD physique) :D


Une piste ici
http://noiseehc.freeweb.hu/IListSource.html
 
Je connais très bien le Dataset mais je veux un objet plus générique pour un schéma complexe que le Dataset ne peut résoudre.

Reply

Marsh Posté le 29-03-2005 à 16:56:18    

C'est tellement complexe ? Y'a des imbrications ?

Reply

Marsh Posté le 29-03-2005 à 17:03:10    

FlorentG a écrit :

C'est tellement complexe ? Y'a des imbrications ?


Oui pas mal d'imbrication nécessitant un traitement spécifique.

Reply

Marsh Posté le 06-04-2005 à 15:55:52    

Voici grosso modo l'architecture que tu dois utiliser.
Le DataGrid s'occupe du rendu (remplacement de clé étrangère par les libellés, affichage de date "jolies", etc ...)
Tu lui donnes à manger un DataView, qui s'occupe de certaines fonctionnalité (trie, filtre, etc ...)
Tu donnes à manger au DataView un DataSource qui lui correspond au mapping de ta(tes) table(s) en base.
 
Si tu veux plus de précisions, n'hésite pas :)

Reply

Marsh Posté le 06-04-2005 à 15:57:01    

Ca je pense qu'il le sait déjà ;)

Reply

Marsh Posté le 06-04-2005 à 16:01:39    

Autant pour moi alors ! :)

Reply

Marsh Posté le 06-04-2005 à 16:02:12    

Faut juste arriver à lui faire piger que les DataSet sont parfaits commme business object :D

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed