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 :

LinqToSQL et relation maitre détail : problemes de mise à jour


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut LinqToSQL et relation maitre détail : problemes de mise à jour
    Bonjour à tous,

    Je suis en train d'essayer de me faire une petite galerie photo. La page sur laquelle je suis en train de bloquer est simple au niveau du principe :
    J'aimerai afficher un photo et ses commentaires et donner la possibilité d'ajouter un commentaire.
    J'ai donc mes entités LinqToSql formées comme suit :

    Categories -> Photos -> Commentaires

    Donc j'ai un objectDataSource relié à la photo sélectionnée (via le photoId passé dans l'url).
    j'ai un formview me permettant l'affichage de celle ci avec toutes ses informations contenues dans l'objet Photo.
    L'objet photo contient une collection de commentaires (propriété automatiquement créée par LinqToSQL).

    Ce que j'ai fait, c'est que j'ai créé un repeater à l'interieur de l'itemtemplate. J'ai mis sa propriété Datasource sur un bind vers commentaires. De ce fait, mon repeater m'affiche bien tous les commentaires.

    Là ou je bloque c'est sur l'insertion d'un nouveau commentaire.
    J'ai tenté le coup en mettant un deuxieme formview en mode create bindé sur un nouvel objectdatasource bindé sur mon service commentaires. Dans l'itemupdating, je sette moi meme la propriété du commentaire "Ref_IdPhoto" pour garder le lien entre les deux.

    Tout ça, ça fonctionne.
    Maintenant mon probleme se situe sur la mise à jour de la liste de commentaires. En effet, j'aimerai utiliser un updatepanel pour que la liste se mette à jour toute seule mais cela ne fonctionne pas.

    Je suis donc à la recherche d'un exemple qui ferait ce genre de chose :
    une relation maitre / détail (en LinqToSQL surtout !) avec ajout de nouvelles entrées en live.

    Avez vous déjà réalisé ce genre de chose ?
    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    J'avance un peu mais je bloque toujours...
    En fait j'avais trop imbriqué les formulaires entre eux. J'ai donc tout décorellé.
    Mon probleme est maintenant le suivant :

    J'ai deux ObjectDataSource :

    - Un objectdatasource bindé sur mon service Photo. Prend en paramètre de selection un querystring pour selectionner via l'id de photo

    - Un objectdatasource bindé sur mon service Commentaires. Prend en parametre de selection un controle : formviewPhoto avec la valeur sur selectedValue (ensuite la méthode GetList du service est censé prendre l'id de l'objet photo envoyé en parametre et réaliser une requete Linq pour ne renvoyer que les commentaires de cette photo).

    Mon problème est que je reçois une valeur null en paramètre. Comme si l'objectdatasource pour la photo n'avait pas encore fait sa selection...

    Une idée ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    J'ai finalement réussi par trouver !

    Tout d'abord il a fallu recaler mon objectDataSource pour les commentaires et le binder à la valeur selectionnée par l'objectDatasource de mon objet Photo.
    Pour cela, j'ai du créer une fonction attendant en paramètre un object de type Photo et retournant tous les commentaires concernant cette photo dans mon service commentaires.

    Ensuite, j'ai modifié l'objectdatasource commentaires et j'ai choisi cette méthode comme source pour le SELECT. Comme paramètre j'ai choisi le control formview qui présente la photo. Ensuite, dans le code asp.net, j'ai modifié le paramètre du select, qui par défaut a pris le selectedvalue du formview. Je l'ai mis sur dataitem ce qui permet de récupérer l'objet bindé au formview.

    Une fois fait, j'ai séparé toutes les zones de présentation :
    1) un formview pour la photo (bindé à l'objectdatasource Photo)
    2) un repeater pour les commentaires existants (bindé à l'objectdatasource Commentaires)
    3) un formview avec DefaultMode sur insert pour la création d'un nouveau commentaire (bindé à l'objectdatasource commentaires)

    Pour la mise à jour en AJAX de l'ajout d'un nouveau commentaire, j'ai placé un updatepanel autour du repeater d'affichage des commentaires et un autour du formview d'insertion.

    Le tour est joué

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

Discussions similaires

  1. Relation maitre détail dans un dataset
    Par ctl1970 dans le forum C#
    Réponses: 4
    Dernier message: 12/11/2007, 01h16
  2. Mise à jour autravers d'une relation maitre-Détail
    Par Paxaranne dans le forum Forms
    Réponses: 3
    Dernier message: 26/07/2007, 15h00
  3. la suppression dans la relation maitre détail
    Par 6AAAAA dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/07/2007, 21h20
  4. Relation maitre détail
    Par codial dans le forum Bases de données
    Réponses: 4
    Dernier message: 28/11/2006, 11h02
  5. Gérer une relation Maitre détail
    Par codial dans le forum Bases de données
    Réponses: 10
    Dernier message: 16/10/2006, 11h01

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