Bonjour bonjour!
A partir d'une couche métier développée dans un autre outil et langage que Visual Studio, je souhaite trouver la meilleure méthode pour afficher mes données.
En gros, voici à l'heure actuelle où j'en suis:
- Je construis mes objets métier (en Powerbuilder), j'execute une requête dans ceux-ci (oui pas de couche d'accès aux données, on verra plus tard...) et je charge les données dans une collection powerbuilder. Je construis ensuite des méthodes d'accès aux informations telles que:
o getNbColumns() pour retourner le nombre de champs liés à la requete,
o getcolumnname(int i) pour retourner le nom d'une colonne,
o getchampnumber(int i, int j) pour retourner le contenu du champs ligne i colonne j s'il est de type numérique
o ...
- Je déploie cet objet sous forme d'assembly .NET (DLL)
- Je référence ma dll dans visual studio
- Je construis ensuite un "wrapper" ou "proxy" (je ne sais pas comment vous appellez çà) en .NET, qui instancie cet objet métier, et qui offre une méthode getDataSet qui construit un DataSet à partir des méthodes de mon objet métier.
- Je pose ensuite un objectdatasource, et lie le SelectMethod à la méthode getDataSet de mon proxy.
- Je pose ensuite ma grille, et lie cette grille à l'objectdatasource.
Bon, ok, çà marche. On est bien dans une architecture 3-tiers, et on désire le rester.
Maintenant je voudrais savoir:
- Ma requête SQL de mon objet métier est du style : "SELECT * FROM client". Comment je fait pour n'afficher QUE le code du client, son nom et son prénom? Plusieurs méthodes sont possibles, mais quelle est la meilleure:
o passer un paramètre à ma méthode getDataSet, genre un tableau de chaines, comprenant la liste des champs que je veux afficher? Ensuite dans le code, je ne met dans mon dataset que les colonnes passées en paramètre. Au passage, je ne sais pas comment définir un tableau dans le SelectParameter...
o dire tant pis à la belle architecture 3-tiers, et passer la requête SQL dans l'instanciation de l'objet métier? C'est moche, mais c'est le plus simple.
o Faire une méthode getDataSet différente, ou faire une méthode d'initialisation de mon objet métier différente, à chaque fois que je dois faire un affichage différent?
- L'objectdatasource ne permet pas d'avoir une actualisation de la gridview (ce qui est normal). Comment je peux faire pour "simplement", redimensionner mes colonnes, ou en virer une si besoin? Du code obligatoire?
- L'objectdatasource est-il la meilleure solution? Est-il plus intéressant de passer par un remplissage de grille "à la main" ? Si c'est le cas, vous n'avez pas fini de me voir sur les forums...
Je suppose que je ne suis pas le seul à avoir été confronté à ce problème...
En fait, tout çà n'est qu'un début. Le but est de migrer beaucoup d'objets, il nous faut donc quelque chose qui soit simple à mettre en place, générique, et qui respecte au "maximum" les concepts...
Je sais que parfois j'ai un peu de mal à m'expliquer, donc n'hésitez pas à me le faire savoir si vous n'avez rien compris.
Merci d'avance.