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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

problème avec une Table en C# asp.net


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 77
    Points : 56
    Points
    56
    Par défaut problème avec une Table en C# asp.net
    Bonjour

    Je débute depuis peu en asp.net et je suis confronté à un problème sur un composant Table.

    Pour expliquer mon besoin avant de rentrer dans le vif du sujet :

    J'ai besoin d'avoir sur ma page un tableau montrant des données récupérées depuis une base via un web service. J'ai donc utilisé un composant Table pour lequel je construis dynamiquement les lignes et les cellules de chaque ligne.
    L'utilisateur doit pouvoir ajouter une nouvelle ligne.

    L'idée que j'avais est que lorsqu'il clique sur le bouton ajouter une ligne, ça ajoute une ligne (les cellules sont composées de contrôle textbox), il met les infos qu'il veut et ensuite il clique sur un autre bouton "save" et ça récupère les infos tapée puis les passe au web service qui met tout ça dans la base.

    Le gros problème que j'ai, c'est que mon objet Table n'est pas persistant, et je ne peux pas le stocker dans le ViewState car ce n'est pas serializable.

    Et donc au moment ou je clique sur le bouton "save", je ne peux pas récupérer les valeurs tapées dans la nouvelle ligne car celle-ci n'existe plus dans le contexte actuel.

    ni les TableCellCollection ni les TableRowCollection ne sont serializable bien sur sinon ça aurait été trop facile.

    Je ne vois pas trop comment me sortir de cette situation en gardant l'orientation que j'ai prise pour le moment.
    J'avais pensé à utilisé un GridView à un moment mais l'insertion de donnée me parait peu évidente avec ce type d'objet...

    Si quelqu'un a des suggestions ou une idée pour résoudre mon problème, je lui serais très reconnaissant.

    Merci d'avance

  2. #2
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 77
    Points : 56
    Points
    56
    Par défaut
    bon je dois être fatigué pour pas avoir pensé à ça mais pourquoi me faire chier avec une ligne de tableau dynamique alors que l'utilisateur ne peut rajouter qu'une ligne à chaque fois... autant mettre des contrôles fixes sur lesquels je peux faire ce que je veux, puis mettre à jour mon dataset et voilà tout...

    c'est sans doute une solution très moche mais bon.. m'en fous

  3. #3
    Expert éminent
    Avatar de Lyche
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2007
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 523
    Points : 6 790
    Points
    6 790
    Billets dans le blog
    4
    Par défaut
    Il ne faut pas s'en foutre, si cela alourdis ton appli, ce n'est pas bon. N'oublie pas que tu développes, mais que les utilisateurs doivent se sentir "à l'aise" dans ton appli. Limiter les temps de chargements, faire un code propre (pour toi et pour celui qui reprend derrière) et optimiser les commandes pour ne pas que l'utilisateur soit "victime" d'une application lourde, voir trop lourde.

    Si tu as trouvé tant mieux, mais fais bien attention à l'optimisation de ton code

    Cordialement.

  4. #4
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    Et surtout inutile de réinventer la roue, prends une gridview et si besoin une details view. Ca te fera tout ce dont tu as besoin.

  5. #5
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 77
    Points : 56
    Points
    56
    Par défaut
    je vais regarder la detailsView qui a l'air sympa

    merci pour vos réponses..

  6. #6
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 77
    Points : 56
    Points
    56
    Par défaut
    bon je crois que je vais rester sur ma solution initiale, qui n'est peut-être pas optimale, mais ça reste un petit dev et le nombre de ligne à afficher est par définition assez réduit donc niveau perf je pense que l'impact n'est pas si important que ça.

    En fait le DetailsView n'est pas utilisable pour moi car ça affiche les enregistrements 1 par 1 et j'ai besoin d'avoir ma liste entière.

    Et donc la oui une gridView pourrait me faire l'affaire mais je sais pas si je vais pas plus galérer à customiser la gridView pour gérer l'ajout de nouvelle ligne qu'à gérer mon petit tableau dynamique (sachant que je ne suis pas connecté directement à la BDD mais que j'ai besoin de la tenir à jour, tous les insert/update/delete se font via un web service)

    Merci quand même pour vos réponses, je vais coder le plus proprement possible mais je n'ai malheureusement pas le temps ni le niveau pour faire de l'optimisé (je suis tout seul, j'ai un délai assez réduit, des specs moyennement claires qui sont modifiées assez régulièrement et un niveau débutant en développement web et en asp.net... )

  7. #7
    Expert éminent
    Avatar de Lyche
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2007
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 523
    Points : 6 790
    Points
    6 790
    Billets dans le blog
    4
    Par défaut
    Tu aurais pu passer par un dataSet et un dataAdapter pour gérer les mises à jour de ta table. Enfin, c'est un choix
    Bonne chance pour ton appli !

    Cordialement.

    PS : si tu as des question en c# et .net sur les optimisations de codes, n'hésite pas à poster. Pas mal de monde pourront t'aider, et tu pourras ainsi progresser

  8. #8
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    Ce que je te conseille pour un cas comme ca, si tu veux reter sur un modele de table html simple a mettre en place, c'est d'utiliser au moins un repeater alors.

    Le mieux serait aussi de creer une couche modele d'objet metier. Ainsi depuis tes appels web services, tu sortirais une List<MonObjet> que tu pourrais directement utiliser dans ton repeater.

  9. #9
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 77
    Points : 56
    Points
    56
    Par défaut
    @Arthis
    j'ai effectivement regardé les repeater mais je n'ai malheureusement pas le temps de m'autoformer à leur utilisation, même si j'imagine qu'il n'y a riend e complètement sorcier

    @Lyche
    En fait je passe bien par un dataSet pour récupérer mes données, ce dataset je le récupère d'un web service donc il n'est absolument pas relié à la base quand je le manipule donc pour faire un dataAdapter ça me parait difficile.

    Donc ce que je fais c'est que je le récupère une fois lors du 1er chargement de ma page et je le stock dans mon ViewState (pour éviter d'appeler le web service à chaque postBack)
    Ensuite s'il y a une opération d'insertion ou de mise à jour d'une ligne, j'appelle la méthode adéquate du web service, et je refais un appel à ce même web service pour récupérer le dataset mis à jour et je remplace l'ancien dans le viewState...

    C'est pas beau mais je pense que ça marchera.
    Ma table sera reconstruite à chaque postback, heureusement je n'aurais jamais plus d'une dizaine de ligne à la fois, c'est pour ça que je me permet de faire comme ça...

    Merci encore pour vos réponses

  10. #10
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 77
    Points : 56
    Points
    56
    Par défaut
    argh la galère

    décidemment...

    bon finalement je vais passer un gridview tant pis si ça me prend du temps

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec une table attachée
    Par ARFY56 dans le forum Modélisation
    Réponses: 2
    Dernier message: 17/12/2008, 17h23
  2. problème avec une table de faits
    Par mikedavem dans le forum Conception/Modélisation
    Réponses: 1
    Dernier message: 29/04/2008, 06h37
  3. [XSL~FO] Problème avec une table de plus d'une page
    Par ganga dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 25/01/2007, 20h16
  4. [JSTL] Problème avec une table
    Par lionelh dans le forum Taglibs
    Réponses: 3
    Dernier message: 22/02/2006, 21h26
  5. Problème avec une table
    Par Paulinho dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 15/12/2005, 10h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo