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érer une donnée d'un SDS à partir d'un GridView


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut Récupérer une donnée d'un SDS à partir d'un GridView
    Bonjour à tous

    J'ai placé un SqlDataSource et un GridView dans ma page de manière assez simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <asp:SqlDataSource ID="sdsContact" runat="server" ConnectionString="<%$ ConnectionStrings:DataDev %>"></asp:SqlDataSource>
            <asp:GridView ID="gvContact" runat="server" DataKeyNames="IdImmoContact" DataSourceID="sdsContact"></asp:GridView>
    Je les ai chargé par le CodeBehind comme suit :
    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
     
    With sdsContact
                .SelectCommandType = SqlDataSourceCommandType.Text
                .SelectCommand = "EXEC dbo.IMMO_ContactVendeurListe '31AA4C17-C261-436D-8F29-8A6E8005CF5C'"
                .DeleteCommandType = SqlDataSourceCommandType.Text
                .DeleteCommand = "DELETE FROM dbo.IMMO_Contact WHERE IdImmoContact = @IdImmoContact"
            End With
            Dim bfNomContact, bfTelContact, bfMailContact As New BoundField
            Dim btfVoirContact As New ButtonField
            With gvContact
                .AutoGenerateDeleteButton = True
                .AutoGenerateColumns = False
                With .Columns
                    .Add(bfNomContact)
                    .Add(bfTelContact)
                    .Add(bfMailContact)
                    .Add(btfVoirContact)
                End With
                .DataBind()
            End With
    Donc rien de bien transcendental jusque là.

    Maintenant, je voudrais récupérer (dans mon évènement RowCommand du GridView) une donnée qui se trouve dans mon SDS et que je n'affiche pas dans mon GridView et je ne sais pas comment faire. Je ne trouve pas de doc ou de tuto qui m'explique ça.

    Pourriez vous me donner le point de départ ?

  2. #2
    Membre émérite Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Par défaut
    Salut,
    une idée c'est de remonter sur le GridView les colonnes que tu souhaitent récupérer les valeurs, mais tu ne les affiches pas. Ensuite une fois dans l’événement RowCommand, tu récupère l'index du row sélectionné, une fois l'index recuperer tu peux accéder à la valeur du colonne en utilisant la collection Cells

    En espérant t'avoir aidé.

  3. #3
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci pour ton aide.

    Cette piste je l'ai exploitée, mais je n'ai pas trouvé le moyen de ne pas afficher la colonne en question.
    Si tu as du code qui sait le faire, je suis preneur.

  4. #4
    Membre émérite Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Par défaut
    Le plus simple c'est d'agir directement au niveau du BoundField par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bfNomContact.visible=false;

  5. #5
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    bon, je viens d'essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim hfMessageContact As New BoundField
            Dim btfVoirContact As New ButtonField
            With hfMessageContact
                .DataField = "TexteContact"
                .Visible = False
            End With
    Donc on affiche pas le BF.

    Ensuite, dans le RowCommand je tente ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    lblMessageContact.Text = gvContact.Rows(e.CommandArgument).Cells(5).Text
    En gros, je veux récupérer le contenu pour le metre dans un label, tout simplement.
    Sauf que là, le texte est vide.
    J'ai essayer cela pour me faire une idée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lblMessageContact.Text = "texte" & gvContact.Rows(e.CommandArgument).Cells(5).Text & "texte"
    Et à l'affichage ça fait
    textetexte
    donc rine ne vient se metre entre le deux.

    Une autre idée peut-être ?

  6. #6
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    oh putain c'est tordu comme truc, j'ai trouvé !!

    YA TA comme dirait Hiro Nakamura.

    Alors en fait tu a tout bon, sauf qu'il faut le traiter dans le RowDataBound

    Lors de la définition du BF, on fait rien, sauf lui indiquer le champ de donnée concerné.

    Et dans le RowDataBound, on capte le cellule concernée et on la fait disparaitre, comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Protected Sub gvContact_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvContact.RowDataBound
            e.Row.Cells(5).Visible = False
        End Sub
    Super cool, merci pour ton aide.

    Je boucle le topic, enfin, jusqu'à ce que je m'aperçoive d'un effet de bords non visible au premier coup d'oeil....

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/12/2011, 16h11
  2. Récupérer une donnée à partir d'une URL
    Par pv77164 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 26/08/2011, 10h39
  3. Réponses: 15
    Dernier message: 14/06/2009, 04h20
  4. Réponses: 1
    Dernier message: 19/04/2008, 16h26
  5. Réponses: 11
    Dernier message: 13/07/2006, 16h15

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