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 :

gridview et update


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 76
    Par défaut gridview et update
    bonjour a tous,
    je bloque sur une gridview auquel j'ai affecter une session comme source de donnée et l'update na marche pas comme il faut ...
    en fait le update classique ne marche pas... je passe donc par autre chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Delete")
            {
                int index =  Convert.ToInt32(e.CommandArgument);
     
                Session["enCoursList"] = cEncours.getEncoursList((List<cEncours>)Session["enCoursList"], null);
     
                ((List<cEncours>)Session["enCoursList"]).RemoveAt(index);
     
            }
            else if (e.CommandName == "Validate")
            {
                int index = Convert.ToInt32(e.CommandArgument);
     
                Session["enCoursList"]  =   cEncours.getEncoursList((List<cEncours>)Session["enCoursList"], null);
     
     
     
     
                ((List<cEncours>)Session["enCoursList"])[index].Barcode          =      ((TextBox)GridView2.Rows[index].Cells[6].FindControl("Txt_barcode")).Text;
                ((List<cEncours>)Session["enCoursList"])[index].Pudoid           =      ((TextBox)GridView2.Rows[index].Cells[7].FindControl("Txt_pudoid")).Text;
                ((List<cEncours>)Session["enCoursList"])[index].Pudoname         =      ((TextBox)GridView2.Rows[index].Cells[5].FindControl("Txt_pudoname")).Text;
                ((List<cEncours>)Session["enCoursList"])[index].Recipient        =      ((TextBox)GridView2.Rows[index].Cells[2].FindControl("Txt_recipient")).Text;
                ((List<cEncours>)Session["enCoursList"])[index].Sender           =      ((TextBox)GridView2.Rows[index].Cells[3].FindControl("Txt_sender")).Text;
                ((List<cEncours>)Session["enCoursList"])[index].Shipmentdate     =      ((TextBox)GridView2.Rows[index].Cells[4].FindControl("Txt_shipment_date")).Text;
     
            }
        }
    donc j'intercepte l'evenement valider de l'update et je met a jour ma gridview ... le probleme c'est que lorsque l'on clique sur update il transforme les champs en textbox pour les modif ensuite il y a deux bouton valider et annuler... valider me plante ma page car il veux effectuer l'evenement qui est octroyer de base a cette action si je fait ca, je me retrouve sur ma page d'erreur sur laquelle je fait precedent et la j'appuis sur cancel et la les champs sont bien modifiés ! donc en gros ce que je voudrais c'est qu'a la suite de ma mise a jours je lance l'evenement associé à cancel or je ne trouve pas ... et surtout qu'il ne fasse plus son action de base pour l'update !

    merci d'avance pour vos reponses

  2. #2
    Membre Expert Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Par défaut
    montre comment tu définis ta Gridview?

    On ne comprends pas bien ton problème...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 76
    Par défaut
    en fait j'ai fait la liaison graphiquement !
    donc le databind c'est ma session !
    la session est remplis lors d'un click sur un bouton ou je fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                sb.AppendLine(sb + TextBox_barcode.Text + ";;" + TextBox_sender.Text + ";;;;;;;" + DropDownList_pudoid.SelectedItem.Text
                         + ";;" + DateTime.Now.ToString("yyMMdd") + ";" + DateTime.Now.ToString("yyMMdd") + ";;;;;;;;;DECISION ONE;;;;;;;;");
     
                cEncours enCours = new cEncours(TextBox_sender.Text, TextBox_barcode.Text,
                                                DropDownList_pudoid.SelectedItem.Text, DropDownList_pudoname.SelectedItem.Text,
                                                DateTime.Now.ToString("yyMMdd"), "DECISION ONE", sb);
     
     
                Session["enCoursList"] = cEncours.getEncoursList((List<cEncours>)Session["enCoursList"], enCours);
    si tu veux voir plus de mon code notement pour l'init et tout j'avais deja demander de l'aide sur ce forum pour le delete a cette page la :
    http://www.developpez.net/forums/showthread.php?p=2625795#post2625795

  4. #4
    Membre Expert Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Par défaut
    Citation Envoyé par grogui Voir le message
    valider me plante ma page car il veux effectuer l'evenement qui est octroyer de base a cette action
    ça c'est normal si tu veux faire un Update.
    Controle eventuellement la propriété CommandName de ton bouton Valider


    Mais je ne sais toujour pas ce que tu veux faire et qui ne vas pas..

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 76
    Par défaut
    ce que je voudrais c'est modifier la gridview quand on valide or il plante la page !
    j'intercepte bien l'evenement commade valider ! il passe dans mon code mais apres il se passe plus rien !
    je ne comprend pas comment on remet les textbox en label dans le gridview ! et ceci correspond a l'action de cancel... je voulais donc appeler cette methode mais je ne la trouve pas !
    donc si tu vois une manière pour retransformer les textboxs en labels apres l'appuis sur valider je suis preneur ^^

  6. #6
    Membre Expert Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Par défaut
    Une fois que tu as mis à jour ta liste, essaie ça


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gridview2.EditIndex = -1

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 68
    Par défaut Mauvaise problématique
    Votre problème n'est pas facile à cerner car nous n'avons pas une visibilité suffisante sur votre code et votre situation. Mais voici mes remarque sur ce que je pense avoir compris.

    Votre besoin

    En fait, ce qu'il vous faut c'est alimenter un GridView par des données stockées en session. Vous souhaitez pouvoir modifier, ajouter, supprimer des données à volonté comme vous le feriez sur des données stockées en base de données.

    Remarque sur la solution que vous poursuivez

    J'ai observé votre code et j'en déduit que vous tentez de modifier le comportement du GridView pour atteindre votre objectif.

    C'est une idée. Mais réfléchissons. Le GridView n'est-il pas capable d'afficher des données ? Le GridView n'est-il pas capable de les modifier, supprimer, d'en ajouter ? Si bien sur. En fait, il répond déjà parfaitement à vos besoins. Il a été conçu pour cela.

    A mon avis, le problème vient du fait que vous ne travaillez pas au bon endroit. Je ne dit pas que vous ne finiriez pas par trouver un moyen de faire fonctionner votre code, mais...

    Ce qui est spécifique dans votre cas, c'est non pas que vous avez besoin d'un GridView qui fonctionne différemment, mais plutôt que vous avez besoin d'une source de données fonctionnant différemment des sources de données SQL par exemple. Le problème ne se situe donc pas au niveau du GridView, mais au niveau de la source de données.

    En effet, imaginez que vous disposiez d'une source de données capable de travailler sur une session et d'effectuer ajout, suppression, modification,... Il suffirait de renseigner la propriété DataSourceId du GridView avec le nom de cette source de données et terminé. Pas besoin alors de modifier le comportement du GridView. L'avantage de cette solution c'est que vous pouvez aussi bien utiliser cette source de données avec un GridView qu'avec un FormView ou n'importe quel autre objet orienté données.

    Votre problématique c'est en fait de créer cette source de données.

    Création de la source de données

    Plusieurs solutions sont à votre disposition. Voici les deux plus simples dans votre cas.

    1) Tout d'abord, on croit bien souvent que l'on va se simplifier la vie si, dans le cas d'une situation simple, on travaille sur un tableau ou une collection quelconque plutôt que sur une base de données. En fait, c'est faut. C'est si rapide de créer une petite table répondant à nos besoins et les mécanismes de mise à jour de cette table sont si simple à implémenter, si linéaires... Surtout dans un contexte ASP.NET ou par définition tout est conçu pour éviter de maintenir un état en mémoire. Vouloir faire l'inverse c'est décider de nager à contre courant. Mais il est vrai que parfois on n'a pas le choix.

    2) Au delà des sources de données classiques SQL, nous disposons d'un ObjectDataSource très utile. Pour faire simple, ObjectDataSource est une source de données qui se connecte à un objet plutôt qu'à une base de données. Il suffit que cet objet implémente quatre méthodes pour sélectionner, insérer, modifier, supprimer des données. Derrière ces méthodes vous faites ce que vous voulez et donc rien ne vous empêche de travailler sur la session.

    Remarques générales

    .NET est une architecture très puissante imaginée sur la base de ce qu'on appel le modèle de fournisseurs, en application de nombreux DesignPatterns.

    Il faut donc changer notre mode de pensée. Arrêter de penser par défaut "je dois me débrouiller comme je peux" mais plutôt partir du postulat "je peu avoir confiance en la technologie que j'ai choisie et il y a de grandes chances qu'il existe des solutions simple à ma problématique". Il faut aussi changer nos réflexes et prendre le temps de parcourir la documentation.

    Oui, il faut se dire que presque tout est possible sans avoir à 'bricoler'. Dans la majorité des cas il est possible de trouver des solutions simples et linéaires.

    Dans votre cas, il est par exemple carrément possible de créer son propre DataSource appliquant nos propres règles métier. J'ai pour ma part imaginé tout un modèle totalement objet métier respectant parfaitement la séparation BOL/DAL. Plusieurs de mes clients utilisent cette solution et au final, cela a été plutôt simple à implémenter. Grâce à ce modèle je suis capable de réagir très rapidement à tout changement d'une règle métier de l'entreprise. Je n'ai pas peur des éventuelles modifications de la base de données. Bref, on peut faire du super puissant avec .NET. Pour aller plus loin, il est même tout à fait envisageable de développer un fournisseur de données spécifique. C'est dire combien les possibilités sont nombreuses et puissantes.

    Avec .NET est apparu ce que les développeur Java connaissent depuis longtemps : "la confiance".

    Je reconnais cependant que l'univers technologique de .NET est vaste. La plus grande problématique de chacun c'est le temps. Nous n'avons pas tous le temps de passer des journées entières à potasser la doc pour comprendre l'ensemble des mécanismes mis à notre disposition. Mais au final, le temps, nous en perdons beaucoup lorsque nous faisons de mauvais choix. Alors... Moi je ne m'en plaint pas, je gagne ma vie grâce à ça .

    En tous les cas bon courage et n'hésitez pas si vous avez des questions sur l'ObjectDataSource ou autre.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 76
    Par défaut
    merci beaucoup Bossun ca marche a merveille maintenant !
    et merci également mlebreton pour ce cours ^^
    effectivement après lecture je me demande pourquoi je ne suis pas passé par une table ca m'aurais simplifier la tache... je n'ai pas encore les reflex ca fait qu'un an que je developpe.
    quand j'aurais le temps je recommencerais en essayant cette methode... a titre d'entrainement ^^
    pour la creation de la source de donnée effectivement j'etait dans le second cas mais je n'arrivais pas a gerer le cas modifier !

    merci a vous deux !!

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

Discussions similaires

  1. Update sur un GridView qui update pas !
    Par zooffy dans le forum ASP.NET
    Réponses: 1
    Dernier message: 16/09/2008, 09h53
  2. probleme gridview dans update panel
    Par hachdotnet dans le forum ASP.NET
    Réponses: 7
    Dernier message: 12/08/2008, 17h01
  3. Problème taille gridview quand update
    Par lolymeupy dans le forum ASP.NET
    Réponses: 0
    Dernier message: 16/08/2007, 10h40
  4. gridview et update
    Par Poulain dans le forum ASP.NET
    Réponses: 9
    Dernier message: 11/05/2007, 08h08
  5. [VB.Net] Requête d'update dans un gridview
    Par djdada dans le forum ASP.NET
    Réponses: 5
    Dernier message: 11/10/2006, 13h15

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