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 :

Récupération du DataItem d'un gridview avec l'évenement "select"


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Avril 2004
    Messages : 78
    Par défaut Récupération du DataItem d'un gridview avec l'évenement "select"
    Bonjour,

    Je tente de récupérer les données de la ligne sélectionnée dans un Grid view pour les copier dans une table.

    J'ai le code suivant:

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
        protected void GridViewListePrestations_SelectedIndexChanged(object sender, EventArgs e)
        {
            //GridViewListePrestations.DataBind();
    
            GridView Gv = (GridView)GridViewListePrestations;
            if ((Gv.SelectedRow.RowState & DataControlRowState.Selected) == DataControlRowState.Selected)
            {
                DataRowView _rowview = (DataRowView)Gv.SelectedRow.DataItem;
    
                //Récupération des valeurs de la sélection à ajouter à la vente
                string _codeitem = _rowview.Row.ItemArray[1].ToString();
                int _idPrestation = (int)_rowview.Row.ItemArray[2];
                string _prestation = _rowview.Row.ItemArray[3].ToString();
                double _tarif = (double)_rowview.Row.ItemArray[9];
                double _tva = (double)_rowview.Row.ItemArray[10];
    
                //Calcul de la valeur Hors TVA
                double _tarif_ht;
    
                if (_tva == 0 || _tva == null)
                    _tarif_ht = 0;
                else
                    _tarif_ht = _tarif / (1 + _tva);
    
                //Calcul de la valeur remisée
                double _val_remisee;
    
                _val_remisee = _tarif;
    
    
                //Récupération de l'ID_VENTE du détailsview
                DetailsView Dv = (DetailsView)DetailsViewVente;
                int _idVente = (int)Dv.DataKey.Value;
    
                //Insertion d'une ligne dans la table T_VENTE_DETAIL
                VenteDetailBLL _DetailVente = new VenteDetailBLL();
    
                //Paramètres: @ID_VENTE,@ID_ARTICLE,@ID_PRESTATION,@Code_Item,@Item,@Prix_Unitaire_HT,@Taux_TVA
                //            @Prix_Unitaire_TTC,@Quantite,@Remise,@Total_Article
                _DetailVente.InsertVenteDetail(_idVente, 0, _idPrestation, _codeitem, _prestation, _tarif_ht, _tva, _tarif, 1, 0, _val_remisee);
    
                //Mise à jour de l'affichage dans le gridview
                ODS_PrestationsRDV.Select();
                //ODS_PrestationsRDV.DataBind();
                GridViewDetailVente.DataBind();
            }
    
        }
    Le problème c'est que la variable _rowview revient systématiquement à la valeur null, en gros, je n'arrive pas à récupérer les données du dataitem pour les retravailler ensuite.

    Il y a forcément quelque chose que je fais mal, mais je n'arrive pas à mettre le doigt dessus.

    Merci à ceux qui pourront m'aider

    Fab

  2. #2
    Membre chevronné Avatar de BrItneY
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    488
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 488
    Par défaut
    J'ai eu le même sushi, car je tentais de récupérer les valeurs de colonnes masquées, je ne sais pas si c'est ton cas, mais j'utilise des DataKeyNames pour y remédier

    Ex: dans ton GridView tu ajoutes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataKeyNames="[Nom_colonne1], [Nom_colonne2], etc"
    et tu les récupères derrière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string colonne1=[Nom_GridView].DataKeys[Convert.ToInt16(e.CommandArgument)].Values[0].ToString();
    string colonne2=[Nom_GridView].DataKeys[Convert.ToInt16(e.CommandArgument)].Values[1].ToString();
    /// etc...

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Avril 2004
    Messages : 78
    Par défaut
    Merci de ta réponse,

    J'avais fait un test avec les datakeynames mais je ne savais pas très bien les utiliser (notamment avec les e.commandargument). Je vais retenter le coup avec ce que tu me donnes.

    Par contre, ma question va peut-être te paraître bête mais je dois aussi récupérer des ID et des valeurs numériques pour les calculs. Ma question est donc, L'argument ToString est-il obligatoire?

  4. #4
    Membre chevronné Avatar de BrItneY
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    488
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 488
    Par défaut
    Euh, bah ça dépend ce que tu récupères comme valeur

    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string colonne1=[Nom_GridView].DataKeys[Convert.ToInt16(e.CommandArgument)].Values[0].ToString();
    int colonne2=Convert.ToInt16([Nom_GridView].DataKeys[Convert.ToInt16(e.CommandArgument)].Values[1]);
    Il faut que tu convertisses dans le format souhaité le DataKey récupéré...selon tes besoins Regarde toutes les conversions que te proposes Convert

    Hésites pas si t'as une autre question

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Avril 2004
    Messages : 78
    Par défaut
    ça fonctionne nickel.

    j'ai juste une dernière question avant de clore ce sujet. Est-ce que le fait de gérer plusieurs datakeys (6 dans mon cas) pour un gridview n'a pas un impact sur les performances? Car j'envisage de reproduire ce syteme mais pour des écrans avec plusieurs gridview ayant un fonctionnement de ce style, cela fait donc plusieurs gridview multipliés par autant de datakeys.

    Merci

  6. #6
    Membre chevronné Avatar de BrItneY
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    488
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 488
    Par défaut
    Citation Envoyé par BrItneY Voir le message
    Hésites pas si t'as une autre question
    Edit -> Sauf une question comme cela

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/07/2006, 10h18
  2. Réponses: 2
    Dernier message: 20/06/2006, 16h32
  3. Réponses: 19
    Dernier message: 07/06/2006, 08h06
  4. Récupération login XP sous I.E avec javascript
    Par tdelacou dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/04/2006, 11h39
  5. Récupération du contenu d'un page avec SYS.UTL_HTTP
    Par squalito dans le forum Oracle
    Réponses: 1
    Dernier message: 09/10/2005, 06h57

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